Debian上使用Composer进行PHP代码质量检查
一 环境准备
- 确保已安装 PHP CLI 与 Composer,在项目根目录可正常执行:
- php -v
- composer --version
- 建议使用 项目本地安装(而非全局),便于版本统一与团队协作:进入项目根目录(含 composer.json)再执行安装命令。
二 常用工具与安装
- 代码风格检查与自动修复
- PHP_CodeSniffer(PHPCS):检测是否符合规范;PHP_Code Beautifier(PHPCBF):自动修复可修复问题
- 安装:composer require --dev squizlabs/php_codesniffer
- 代码风格自动修复(与PHPCS互补)
- PHP-CS-Fixer:按规则自动格式化
- 安装:composer require --dev friendsofphp/php-cs-fixer
- 静态分析(类型与潜在错误)
- PHPStan:发现类型不匹配、未定义调用等
- 安装:composer require --dev phpstan/phpstan
- 代码坏味道与复杂度
- PHPMD(PHP Mess Detector):检测过长方法、重复代码、未使用代码等
- 安装:composer require --dev phpmd/phpmd
- 以上工具均通过 Composer 的 –dev 安装到 vendor/,便于在 CI 或本地统一调用。
三 快速配置与常用命令
- PHP_CodeSniffer
- 查看可用标准:./vendor/bin/phpcs -i
- 检查:./vendor/bin/phpcs --standard=PSR12 src/
- 自动修复:./vendor/bin/phpcbf --standard=PSR12 src/
- 推荐在项目根目录添加配置文件 phpcs.xml / phpcs.xml.dist,统一标准与忽略路径,之后直接运行 phpcs 即可生效。
- PHP-CS-Fixer
- 在项目根目录创建 .php-cs-fixer.dist.php,示例:
- use PhpCsFixer\Config; use PhpCsFixer\Finder;
- $finder = Finder::create()->in(DIR.‘/src’)->in(DIR.‘/tests’);
- $config = new Config();
- $config->setRules([‘@PSR12’ => true, ‘array_syntax’ => [‘syntax’ => ‘short’]])->setFinder($finder);
- return $config;
- 执行修复:./vendor/bin/php-cs-fixer fix
- PHPStan
- 在项目根目录创建 phpstan.neon,示例:
- 执行分析:./vendor/bin/phpstan analyse
- PHPMD
- 在项目根目录创建 phpmd.xml,示例:
- 执行检查:./vendor/bin/phpmd src text phpmd.xml
- Composer 脚本一键调用(推荐)
- 在 composer.json 的 scripts 中添加:
- “scripts”: {
- “cs:check”: “phpcs --standard=PSR12 src/”,
- “cs:fix”: “phpcbf --standard=PSR12 src/”,
- “phpstan”: “phpstan analyse”,
- “phpmd”: “phpmd src text phpmd.xml”,
- “php-cs-fixer”: “php-cs-fixer fix”
- }
- 之后可直接运行:composer cs:check、composer phpstan、composer phpmd 等。
四 集成到Git与CI
- Git 提交前本地检查
- 在 package.json 或 Makefile 中封装脚本,提交前执行:composer cs:check && composer phpstan
- 也可结合 pre-commit 钩子(如 husky、simple-git-hooks)自动阻断不合规提交。
- CI 示例(GitHub Actions)
-
- name: Run Code Sniffer
- run: vendor/bin/phpcs --standard=PSR12 src/
-
- name: Run PHPStan
- run: vendor/bin/phpstan analyse
-
- name: Run PHPMD
- run: vendor/bin/phpmd src text phpmd.xml
- 将检查步骤设置为 required,阻止不合规代码合入。
五 实用建议
- 组合建议
- 代码风格:优先使用 PHPCS + PHP-CS-Fixer(前者发现问题,后者自动修复)
- 静态分析:二选一 PHPStan 或 Psalm(类型与潜在错误)
- 代码坏味道:PHPMD
- 配置与协作
- 将 phpcs.xml / phpstan.neon / phpmd.xml / .php-cs-fixer.dist.php 纳入版本控制,保证团队规则一致
- 在 EditorConfig 中统一缩进、换行、编码等基础风格,减少工具冲突
- 渐进式严格
- PHPStan 从 level 0 起步,逐步提升严格度;PHPCS 先用 PSR12,再按需定制规则。