district09/qa-php

PHP项目和包的质量保证工具和配置。

2.0.0 2024-03-28 11:54 UTC

This package is auto-updated.

Last update: 2024-09-03 21:17:40 UTC


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.xmlphpcs.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 ./