在 Debian 中使用 Composer 进行代码质量检查
一 环境准备
- 安装 PHP 与常用扩展(确保 CLI 可用):sudo apt update && sudo apt install php php-cli php-xml php-json -y
- 安装 Composer(全局可用):
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer
composer --version
- 建议将全局 Composer 可执行目录加入 PATH(常见为 ~/.composer/vendor/bin),便于直接运行 phpcs/phpstan/phpmd 等命令。
二 安装与配置常用质量工具
- 通过 Composer 安装开发依赖(作为 –dev 安装,纳入版本控制便于团队统一):
composer require --dev phpstan/phpstan
composer require --dev squizlabs/php_codesniffer
composer require --dev phpmd/phpmd
composer require --dev friendsofphp/php-cs-fixer
- 建议的配置文件与用途一览(放在项目根目录):
- PHP_CodeSniffer:phpcs.xml(定义风格标准,如 PSR12)
- PHPMD:phpmd.xml(复杂度、未使用代码等规则)
- PHP-CS-Fixer:.php-cs-fixer.dist.php(自动修复风格问题)
- PHPStan:phpstan.neon(分析级别与路径)
- 示例最小配置:
- phpcs.xml
My project coding standard
- phpmd.xml
Custom rules
- phpstan.neon
parameters:
level: 5
paths:
- src
- tests
- .php-cs-fixer.dist.php
use PhpCsFixer\Config;
use PhpCsFixer\Finder;
$finder = Finder::create()->in(DIR.‘/src’)->in(DIR.‘/tests’);
$config = new Config();
return $config->setRules([‘@PSR12’ => true, ‘array_syntax’ => [‘syntax’ => ‘short’]])
->setFinder($finder);
- 如需更强的静态分析,可补充安装 Phan(需启用 php-ast 扩展):sudo apt-get install php-ast;随后 composer require --dev phan/phan 并初始化配置:./vendor/bin/phan --init。
三 用 Composer Scripts 一键执行检查
- 在 composer.json 中定义脚本,统一团队命令入口:
{
“scripts”: {
“phpstan”: “phpstan analyse --configuration=phpstan.neon src”,
“phpcs”: “phpcs --standard=phpcs.xml src”,
“phpcbf”: “phpcbf --standard=phpcs.xml src”,
“php-cs-fixer”: “php-cs-fixer fix --config=.php-cs-fixer.dist.php”,
“phpmd”: “phpmd src text phpmd.xml”,
“test”: “phpunit”,
“qa”: [“@phpcs”, “@phpstan”, “@phpmd”],
“quality”: [“@qa”, “@test”]
}
}
- 常用命令:
- 运行全部质量检查:composer quality
- 仅风格检查/自动修复:composer phpcs;composer phpcbf
- 静态分析:composer phpstan
- 复杂度与潜在问题:composer phpmd
- 运行测试:composer test
- 说明:上述命令依赖各工具已作为 –dev 安装;脚本支持组合、传参与配置文件路径,便于本地与 CI 复用。
四 提交前自动检查与 IDE 联动
- Git 提交前自动检查(阻止不合规代码入库):
- 方式一:使用 Composer 事件脚本
- 在 composer.json 添加:“scripts”: { “pre-commit”: “@qa” }
- 在 .git/hooks/pre-commit 写入:exec composer run-script pre-commit
- 方式二:手写钩子脚本(示例仅做 phpcs 校验)
#!/usr/bin/env bash
FILES=$(git diff --cached --name-only --diff-filter=ACMR | grep ‘.php$’)
[[ -z “$FILES” ]] && exit 0
for f in $FILES; do
vendor/bin/phpcs --standard=phpcs.xml “$f” || { echo “phpcs failed: $f”; exit 1; }
done
exit 0
- PHPStorm 联动(便于实时代码检查与一键执行):
- 配置 phpcs/phpmd/PHPStan:File > Settings > Languages & Frameworks > PHP > Code Sniffer / Quality Tools > PHP Mess Detector / PHPStan,选择对应可执行文件路径(如 vendor/bin/phpcs、vendor/bin/phpmd、vendor/bin/phpstan),并启用相应 Inspections。
- 在 Editor > Inspections 勾选 PHP Code Sniffer Validation,选择 PSR12 等规范,即可在编辑器中实时标记风格问题。
五 CI/CD 集成示例
- GitHub Actions(每次推送自动运行质量检查与测试):
name: PHP Quality & Tests
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: ‘8.1’
extensions: mbstring, intl
- name: Install dependencies
run: composer install --no-interaction --no-progress --optimize-autoloader
- name: Run PHPStan
run: composer phpstan
- name: Run PHP_CodeSniffer
run: composer phpcs
- name: Run PHPMD
run: composer phpmd
- name: Run Tests
run: composer test
- 说明:将脚本命令与配置纳入仓库,确保 CI 与本地一致,持续保障代码质量。