Ответ
В PHP-проектах я настраиваю и использую комплекс инструментов для статического анализа, чтобы поддерживать высокое качество кода на ранних этапах.
Основной стек:
-
PHP_CodeSniffer (PHPCS) + PHP-CS-Fixer. Первый — для проверки, второй — для автоматического исправления стиля кода. Использую стандарт PSR-12 и кастомные правила проекта. Конфигурация в
phpcs.xml.dist:<?xml version="1.0"?> <ruleset name="MyProject"> <rule ref="PSR12"/> <rule ref="SlevomatCodingStandard.TypeHints.PropertyTypeHint"/> <file>src</file> <file>tests</file> <exclude-pattern>*/vendor/*</exclude-pattern> </ruleset> -
PHPStan. Запускаю на максимальном уровне (
level: 9) для строгого контроля типов и поиска скрытых ошибок. Интегрирую его в CI/CD пайплайн, чтобы проверка была обязательным этапом.# phpstan.neon parameters: level: max paths: - src checkMissingIterableValueType: false -
Psalm. Использую в дополнение к PHPStan в некоторых проектах, так как он предлагает уникальные проверки, особенно для аннотаций типов в PHPDoc и поиска возможных SQL-инъекций.
Интеграция в процесс:
Я настраиваю скрипты в composer.json, чтобы команды были стандартизированы для всех разработчиков:
{
"scripts": {
"cs-check": "phpcs",
"cs-fix": "phpcbf",
"stan": "phpstan analyse",
"analyse": ["@cs-check", "@stan"]
}
}
Запуск composer analyse выполняет всю цепочку проверок. Это позволяет отлавливать проблемы до коммита и код-ревью, значительно экономя время команды.