district09 / qa-php
PHP项目和包的质量保证工具和配置。
Requires
- php: ^8.1
- enlightn/security-checker: ^1.4|^2.0
- ergebnis/composer-normalize: ^2.8
- nette/neon: ^3.2
- phpcompatibility/php-compatibility: ^9.3
- phpmd/phpmd: ^2.11
- phpro/grumphp-shim: ^2.0
- phpspec/prophecy: ^1.10
- phpspec/prophecy-phpunit: ^2.0
- phpstan/phpstan: ^1.0
- phpstan/phpstan-deprecation-rules: ^1.0
- phpunit/phpunit: ^9
- sebastian/phpcpd: ^6.0
- squizlabs/php_codesniffer: ^3.5.6
- symfony/filesystem: ^5.2|^6.0|^7.0
README
本包为PHP项目和包(库)提供了一组质量保证工具和配置文件。
要求
安装
将grumphp
条目添加到composer.json
文件的extra
部分。
"grumphp": { "config-default-path": "vendor/district09/qa-php/configs/grumphp.yml" }
将qa-php包作为开发要求添加
composer require --dev district09/qa-php:^1.0
配置
常规
如有需要,您可以扩展或覆盖提供的任务配置文件。只需在项目的根目录中创建匹配的配置文件即可。
例如,要覆盖提供的phpcs.xml
文件,您可以创建一个phpcs.xml
或phpcs.local.xml
文件。
请注意,.local.
文件应仅用于不应提交的更改。在.gitignore
中排除它们
/*.local.*
Yaml和Neon文件将默认扩展(合并到)提供的配置文件。创建一个.env
或.env.local
文件,并添加以下内容以更改此行为
[FILENAME]_SKIP_[TYPE]=1
其中[FILENAME]
与配置文件名匹配,而[TYPE]
可以是
LOCAL
以跳过例如您的phpstan.local.neon
文件。PROJECT
以跳过例如您的phpstan.neon
文件。GLOBAL
以跳过例如由qa-php提供的phpstan.neon
文件。
其他文件类型不能合并,将仅覆盖所有其他更具体的文件。
PHPStan仅用于弃用模式
创建一个phpstan.neon
文件,并添加以下内容以忽略除弃用之外的所有内容
parameters:
customRulesetUsed: true
ignoreErrors:
- '#^(?:(?!deprecated).)*$#'
忽略自动创建的配置文件
一些GrumPHP任务需要配置文件。这些文件会自动创建,来自vendor/qa-php/config中的示例,或者来自您项目或包根目录中的特定项目文件。生成的文件也存储在相同的项目/包根目录中。您可以通过.qa-php.
后缀识别这些文件。
这些文件不应提交!请将它们添加到.gitignore
文件
/*.qa-php.*
忽略PHPUnit构建文件
当PHPUnit任务运行时,覆盖率报告文件会存储在项目根目录下的build
目录中。请将此文件添加到.gitignore
文件
/build /.phpunit.result.cache
在本地运行PHPUnit而不进行覆盖率报告
使用覆盖率报告运行PHPUnit很耗时。您可以将生成的phpunit.qa-php.xml
文件复制到phpunit.local.xml
,并从其中移除<coverage>
部分。
运行GrumPHP
GrumPHP将在git提交和推送时自动运行所有更改的代码上的所有任务。
您可以一次性运行所有任务
vendor/bin/grumphp
或者,您可以通过运行以下命令手动运行一个或多个特定任务
vendor/bin/grumphp --tasks phpcs,phpmd vendor/bin/grumphp --tasks phpunit
PHPStorm
PHPStorm需要PHP_CodeSniffer、PHP Mess Detector和PhpUnit的配置文件。至少运行一次grumphp命令(成功)以生成这些文件。
文件将创建为
phpcs.qa-php.xml
:PHP_CodeSniffer配置文件。phpmd.qa-php.xml
:PHP Mess Detector配置文件。phpunit.qa-php.xml
:PHPUnit配置文件。
在PHPStorm中配置这些文件的路径
- 编辑器 > 检查 > PHP > 质量工具 > PHP Mess Detector验证 将
phpmd.qa-php.xml
添加到“自定义规则集”。 - 编辑器 > 检查 > PHP > 质量工具 > PHP_CodeSniffer验证 将“编码标准”设置为“自定义”,并将路径设置为
phpcs.qa-php.xml
。 - 语言 & 框架 > PHP > 测试框架 > 测试运行器设置“默认配置文件”为
phpunit.qa-php.xml
。
PHP 兼容性
为了检查 PHP 兼容性,您可以使用 phpcs 的 PHPCompatibility
检查器。
php vendor/bin/phpcs -p --ignore="*/vendor/*" --extensions=php,inc,module,install,theme --runtime-set testVersion 8.1 --standard=PHPCompatibility ./