digipolisgent/qa-drupal

Drupal网站和扩展(模块、主题或配置文件)的质量保证工具和配置。

3.0.1 2024-08-20 07:58 UTC

README

本软件包为Drupal网站和扩展(模块、主题或配置文件)提供了一套质量保证工具和配置文件。

Build Status Master Maintainability License

要求

版本

支持不同的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.xmlphpcs.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.neonphpstan-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