digipolisgent / qa-drupal
Drupal网站和扩展(模块、主题或配置文件)的质量保证工具和配置。
Requires
- php: ^8.3
- drupal/coder: ^8.3
- drupal/core: ^10.3 || ^11.0
- drupal/drupal-extension: ^5.0
- enlightn/security-checker: ^1.4
- ergebnis/composer-normalize: ^2.11
- mglaman/phpstan-drupal: ^1.1
- nette/neon: ^3.2
- phpcompatibility/php-compatibility: ^9.3
- phpmd/phpmd: ^2.11
- phpro/grumphp-shim: ^1.5.0
- phpspec/prophecy: ^1.10
- phpspec/prophecy-phpunit: ^2
- phpstan/phpstan-deprecation-rules: ^1.0
- phpunit/phpunit: ^9.3
- sebastian/phpcpd: ^6.0
- symfony/phpunit-bridge: ^5.2 || ^6.0
- dev-develop
- 3.0.1
- 3.0.0
- 2.x-dev
- 2.1.1
- 2.1.0
- 2.0.3
- 2.0.2
- 2.0.1
- 2.0.0
- 1.8.1
- 1.8.0
- 1.7.3
- 1.7.2
- 1.7.1
- 1.7.0
- 1.6.2
- 1.6.1
- 1.6.0
- 1.5.6
- 1.5.5
- 1.5.4
- 1.5.3
- 1.5.2
- 1.5.1
- 1.5.0
- 1.4.15
- 1.4.14
- 1.4.13
- 1.4.12
- 1.4.11
- 1.4.10
- 1.4.9
- 1.4.8
- 1.4.7
- 1.4.6
- 1.4.5
- 1.4.4
- 1.4.3
- 1.4.2
- 1.4.1
- 1.4.0
- 1.3.12
- 1.3.11
- 1.3.10
- 1.3.9
- 1.3.8
- 1.3.7
- 1.3.6
- 1.3.5
- 1.3.4
- 1.3.3
- 1.3.2
- 1.3.1
- 1.3.0
- 1.2.3
- 1.2.2
- 1.2.1
- 1.2.0
- 1.1.5
- 1.1.4
- 1.1.3
- 1.1.2
- 1.1.1
- 1.1.0
- 1.0.0
- 0.2.2
- 0.2.1
- 0.2.0
- 0.1.1
- 0.1.0
- dev-main
- dev-2.x-dev
This package is auto-updated.
Last update: 2024-09-20 08:08:00 UTC
README
本软件包为Drupal网站和扩展(模块、主题或配置文件)提供了一套质量保证工具和配置文件。
要求
版本
支持不同的PHP和Drupal版本
- 1.4.x版本:PHP 7.3或7.4 & Drupal 8.8+或9+。
- 1.5.x版本:PHP 7.4 & Drupal 9.1或更高。
- 1.7.X版本:PHP 7.4, 8.X & DRUPAL 9.3或更高。
- 3.0.x版本:PHP 8.3, DRUPAL 10.3或更高。
安装
安装取决于项目类型:网站或Drupal模块。
Drupal网站
将grumphp
条目添加到composer.json
文件的extra
部分。
"grumphp": { "config-default-path": "vendor/digipolisgent/qa-drupal/configs/grumphp-site.yml" }
将qa-drupal软件包作为开发依赖项添加
composer require --dev digipolisgent/qa-drupal:^1.5
Drupal模块
将grumphp
条目添加到composer.json
文件的extra
部分。
"grumphp": { "config-default-path": "vendor/digipolisgent/qa-drupal/configs/grumphp-extension.yml" }
将qa-drupal软件包作为开发依赖项添加
composer require --dev digipolisgent/qa-drupal:^1.5
配置
通用
如果需要,您可以扩展或覆盖提供的任务配置文件。只需在项目的根目录中创建匹配的配置文件即可。
例如,要覆盖提供的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
文件。PACKAGE_TYPE
以跳过例如提供的phpstan-extension.neon
或phpstan-site.neon
文件。PACKAGE_GLOBAL
以跳过例如提供的phpstan.neon
文件。
其他文件类型不能合并,将仅覆盖所有其他更具体的文件。
PHPStan仅用于弃用模式
创建一个phpstan.neon
文件,并添加以下内容以忽略除弃用外的所有内容
parameters:
customRulesetUsed: true
ignoreErrors:
- '#^(?:(?!deprecated).)*$#'
忽略自动创建的配置文件
一些GrumPHP任务需要配置文件。这些文件是自动创建的,来自vendor/qa-drupal/config中的示例或来自您的网站或Drupal模块根目录中的特定项目文件。生成的文件也存储在相同的网站/模块根目录中。您可以通过.qa-drupal.
后缀识别这些文件。
这些文件不应提交!将它们添加到.gitignore
文件中
/*.qa-drupal.*
忽略PHPUnit构建文件
当PHPUnit任务运行时,覆盖率报告文件存储在位于网站/项目根目录中的build
目录中。将此文件添加到.gitignore
文件中
/build /.phpunit.result.cache
在本地运行PHPUnit而不进行覆盖率报告
使用覆盖率报告运行PHPUnit很耗时。您可以通过将生成的phpunit.qa-drupal.xml
文件复制到phpunit.local.xml
并从中删除<logging>
部分来本地加快PHPUnit的速度。
运行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-drupal.xml
:PHP_CodeSniffer 配置文件。phpmd.qa-drupal.xml
:PHP Mess Detector 配置文件。phpunit.qa-drupal.xml
:PHPUnit 配置文件。
在 PHPStorm 中配置这些文件的路径
- 编辑器 > 检查 > PHP > 质量工具 > PHP Mess Detector 验证 将
phpmd.qa-drupal.xml
添加到 "自定义规则集"。 - 编辑器 > 检查 > PHP > 质量工具 > PHP_CodeSniffer 验证 将 "编码标准" 设置为 "自定义" 并将路径设置为
phpcs.qa-drupal.xml
。 - 语言和框架 > PHP > 测试框架 > 测试运行器 将 "默认配置文件" 设置为
phpunit.qa-drupal.xml
。
CodeClimate
更新项目内的 .codeclimate.yml
文件。
确保您使用 CodeClimate 特定的 phpcs 配置文件
prepare: fetch: - url: "https://raw.githubusercontent.com/digipolisgent/php_package_qa-drupal/1.x/configs/phpcs-codeclimate.xml" path: ".phpcs.xml"
确保您使用 PHPCodeSniffer 插件的 beta 版本
plugins: phpcodesniffer: enabled: true channel: beta config: standard: ".phpcs.xml"
PHP 兼容性
为了检查 PHP 兼容性,您可以使用 phpcs 的 PHPCompatibility
sniff
php vendor/bin/phpcs -p --ignore="*/vendor/*" --extensions=php,inc,module,install,theme --runtime-set testVersion 8.1 --standard=PHPCompatibility ./web/modules/contrib