PHPStan и PHP_CodeSniffer для профессиональной разработки на PHP
Использование таких инструментов, как PHPStan и PHP_CodeSniffer, является важной частью профессиональной разработки на PHP. Они помогают поддерживать высокое качество кода, находить ошибки на ранних этапах и соблюдать стандарты кодирования. Давайте разберем, для чего нужны эти инструменты и как их использовать.
1. PHPStan
1.1. Что такое PHPStan?
PHPStan — это статический анализатор кода для PHP. Он анализирует ваш код без его выполнения и находит потенциальные ошибки, такие как:
- Неправильные типы данных.
- Вызов несуществующих методов или функций.
- Ошибки в работе с массивами, объектами и типами.
- Проблемы с наследованием и интерфейсами.
PHPStan помогает выявлять ошибки на ранних этапах разработки, что экономит время и уменьшает количество багов в production.
1.2. Установка PHPStan
Установите PHPStan через Composer:
composer require --dev phpstan/phpstan
1.3. Настройка PHPStan
Создайте конфигурационный файл phpstan.neon
в корне вашего проекта:
parameters:
level: 5 # Уровень строгости (от 0 до 9)
paths:
- src # Укажите папку с вашим кодом
1.4. Запуск PHPStan
Запустите анализ кода:
vendor/bin/phpstan analyse
PHPStan проанализирует ваш код и выведет список ошибок и предупреждений.
1.5. Пример использования
Предположим, у вас есть такой код:
function add(int $a, int $b): int {
return $a + $b;
}
echo add(5, "10"); // Ошибка: второй аргумент должен быть int
PHPStan обнаружит, что второй аргумент "10"
является строкой, а не целым числом, и сообщит об ошибке.
2. PHP_CodeSniffer
2.1. Что такое PHP_CodeSniffer?
PHP_CodeSniffer — это инструмент для проверки соответствия кода стандартам кодирования (например, PSR-12). Он также может автоматически исправлять некоторые ошибки форматирования.
PHP_CodeSniffer помогает:
- Соблюдать единый стиль кода в команде.
- Избегать ошибок, связанных с неправильным форматированием.
- Улучшать читаемость кода.
2.2. Установка PHP_CodeSniffer
Установите PHP_CodeSniffer через Composer:
composer require --dev squizlabs/php_codesniffer
2.3. Настройка PHP_CodeSniffer
Вы можете использовать готовые стандарты, такие как PSR-12, или создать собственный конфигурационный файл.
Для использования стандарта PSR-12 выполните:
vendor/bin/phpcs --standard=PSR12 src
2.4. Запуск PHP_CodeSniffer
Запустите проверку кода:
vendor/bin/phpcs src
Если вы хотите автоматически исправить ошибки форматирования, используйте phpcbf
:
vendor/bin/phpcbf src
2.5. Пример использования
Предположим, у вас есть такой код:
function foo(){
echo "Hello";
}
PHP_CodeSniffer укажет на ошибки:
- Отсутствие пробела после
function
. - Неправильный отступ.
После исправления код будет выглядеть так:
function foo()
{
echo "Hello";
}
3. Зачем это нужно?
3.1. Преимущества использования PHPStan и PHP_CodeSniffer
- Раннее обнаружение ошибок:
- PHPStan находит ошибки до запуска кода, что уменьшает количество багов в production.
- PHP_CodeSniffer помогает избегать ошибок, связанных с форматированием.
- Соблюдение стандартов кодирования:
- Единый стиль кода упрощает чтение и поддержку кода в команде.
- Улучшение качества кода:
- Статический анализ и проверка стиля делают код более надежным и читаемым.
- Экономия времени:
- Автоматизация проверок позволяет сосредоточиться на написании кода, а не на поиске мелких ошибок.
- Подготовка к code review:
- Код, прошедший проверку PHPStan и PHP_CodeSniffer, будет содержать меньше замечаний при code review.
3.2. Когда использовать?
- PHPStan: Используйте на этапе разработки, особенно в больших проектах, где важно контролировать типы данных и структуру кода.
- PHP_CodeSniffer: Используйте для проверки стиля кода перед каждым коммитом или merge request.
4. Интеграция в CI/CD
Чтобы автоматизировать проверки, можно интегрировать PHPStan и PHP_CodeSniffer в ваш процесс CI/CD (например, GitHub Actions, GitLab CI, Jenkins).
Пример для GitHub Actions
Создайте файл .github/workflows/php-checks.yml
:
name: PHP Checks
on:
push:
branches:
- main
pull_request:
branches:
- main
jobs:
phpstan:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up PHP
uses: shivammathur/setup-php@v2
with:
php-version: '8.0'
- name: Install dependencies
run: composer install --prefer-dist --no-progress --no-suggest
- name: Run PHPStan
run: vendor/bin/phpstan analyse
phpcs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up PHP
uses: shivammathur/setup-php@v2
with:
php-version: '8.0'
- name: Install dependencies
run: composer install --prefer-dist --no-progress --no-suggest
- name: Run PHP_CodeSniffer
run: vendor/bin/phpcs --standard=PSR12 src
Теперь при каждом пуше или pull request будут автоматически запускаться проверки.
5. Заключение
Использование PHPStan и PHP_CodeSniffer — это важный шаг к профессиональной разработке на PHP. Эти инструменты помогают:
- Находить ошибки до запуска кода.
- Соблюдать стандарты кодирования.
- Улучшать читаемость и поддерживаемость кода.
Интеграция этих инструментов в процесс разработки и CI/CD позволяет автоматизировать проверки и сосредоточиться на написании качественного кода.