drupal/coder

Coder 是一个用于审查 Drupal 代码的库。

安装次数: 31,409,793

依赖者: 419

建议者: 0

安全: 0

星标: 29

关注者: 6

分支: 46

类型:phpcodesniffer-standard

8.3.24 2024-04-21 06:13 UTC

README

Automated tests

Coder 是一个用于自动审查 Drupal 代码和修复编码标准的库。它定义了 PHP_CodeSniffer 的规则。

内置支持

在线文档: https://www.drupal.org/node/1419980

注意:已移除对 JavaScript 的支持。请使用 ESLint 检查和修复 JavaScript 文件,并参阅 Drupal ESLint 文档。

全局安装

首先,确保已正确安装 Composer

which composer

如果您遇到 "composer not found" 或类似错误,请遵循 Composer 的安装说明。

在您的家目录(~/.config/composer)的全局 Composer 目录中安装 Coder(8.3.x)

composer global require drupal/coder

要将 phpcsphpcbf 命令在全局范围内可用,请将 Composer bin 路径添加到您的 $PATH 变量中,例如 ~/.profile~/.bashrc~/.zshrc

export PATH="$PATH:$HOME/.config/composer/vendor/bin"

使用方法

检查 Drupal 编码标准

phpcs --standard=Drupal --extensions=php,module,inc,install,test,profile,theme,css,info,txt,md,yml /file/to/drupal/example_module

检查 Drupal 最佳实践

phpcs --standard=DrupalPractice --extensions=php,module,inc,install,test,profile,theme,css,info,txt,md,yml /file/to/drupal/example_module

自动修复编码标准

phpcbf --standard=Drupal --extensions=php,module,inc,install,test,profile,theme,css,info,txt,md,yml /file/to/drupal/example_module

在 Drupal 项目中本地安装

对于协作开发者团队,在本地锁定 Coder 版本与您的其他开发依赖项是有意义的。在包含您的 composer.json 文件的项目中执行以下操作

composer require --dev drupal/coder

然后您可以对自定义模块代码运行 Coder,如下所示

./vendor/bin/phpcs --standard=Drupal --extensions=php,module,inc,install,test,profile,theme,css,info,txt,md,yml web/modules/custom

为了简化执行,强烈建议使用设置文件,请参阅以下内容。

将设置存储在 phpcs.xml.dist 文件中

为了将 PHPCS 设置保存并提交到 Git,您可以在项目中使用 phpcs.xml.dist 文件,如下所示

<?xml version="1.0" encoding="UTF-8"?>
<ruleset name="example">
  <description>PHP CodeSniffer configuration for example development.</description>
  <!-- Check all files in the current directory and below. -->
  <file>.</file>
  <arg name="extensions" value="php,module,inc,install,test,profile,theme,css,info,txt,md,yml"/>
  <!-- Change this value to 7 if you want to check Drupal 7 code. -->
  <config name="drupal_core_version" value="8"/>

  <!-- If you have Coder installed locally then you can reference the Drupal
  standards with relative paths. Otherwise simply use "Drupal" and
  "DrupalPractice. -->
  <rule ref="../vendor/drupal/coder/coder_sniffer/Drupal">
    <!-- Example how you would disable a rule you are not compliant with yet:
    <exclude name="Drupal.Commenting.Deprecated"/>
    -->
  </rule>
  <rule ref="../vendor/drupal/coder/coder_sniffer/DrupalPractice"/>

  <!-- Example how you would disable an external rule you do not like:
  <rule ref="PEAR.Functions.ValidDefaultValue.NotAtEnd">
    <severity>0</severity>
  </rule>
  -->
</ruleset>

然后您可以在没有选项的情况下调用 phpcs,它将读取当前目录中的 phpcs.xml.dist。这也可以用于持续集成设置。示例

./vendor/bin/phpcs -p

与编辑器一起使用

Drupal Code Sniffer 可以与各种编辑器一起使用。

编辑器

自动化测试(PHPUnit + PHPCS + PHPStan)

Coder Sniffer 附带一个 PHPUnit 测试套件,以确保嗅探器正确工作。使用 Composer 安装依赖项

composer install

然后执行测试

./vendor/bin/phpunit

然后对 Coder 自身执行编码标准检查器

./vendor/bin/phpcs

然后执行静态分析

./vendor/bin/phpstan

贡献

  1. 确保在 https://www.drupal.org/project/issues/coder 上存在一个问题
  2. https://github.com/pfrenssen/coder 上创建一个 Pull Request
  3. 将 pull request 的链接发布到 drupal.org 上的问题,并将问题设置为 "需要审查"

谢谢!

维护者

[//]: # cspell:ignore Pieter Frenssen Welford

致谢

格雷格·谢伍德和Squiz Pty Ltd,许多嗅探器是对他们在PHPCS上的原始工作的修改版本。