acquia / coding-standards
Acquia编码标准的PHP_CodeSniffer规则(sniffs)
Requires
- drupal/coder: ^8.3
- phpcompatibility/php-compatibility: ^9.3
- slevomat/coding-standard: ^8.4
- squizlabs/php_codesniffer: ^3.7
Suggests
- brainmaestro/composer-git-hooks: Easily manage Git hooks in your composer config.
- dealerdirect/phpcodesniffer-composer-installer: Automatically install PHP_CodeSniffer coding standards (rulesets).
README
Acquia PHP编码标准是一组PHP_CodeSniffer规则(sniffs),用于Acquia PHP项目的编码标准,包括Drupal扩展。
规则
Acquia PHP编码标准包括以下规则集的sniffs选择
- Drupal Code Sniffer封装了Drupal编码标准和模块开发的最佳实践。
- PHP_CodeSniffer本身包含几个广泛适用的规则集。
- PHPCompatibility检查PHP跨版本兼容性,支持所有语言版本。
- Slevomat Coding Standard提供功能(安全性和行为)、清理(死代码)和格式化(一致外观)的sniffs。
规则集
根据项目 框架 和 受众 将规则分为规则集
- 针对Drupal社区的项目的,例如Drupal模块,应采用Drupal规则集。所有其他项目应采用(更通用的)PHP规则集。
- 公开项目,例如开源Drupal模块,应采用非严格规则集以促进外部协作。所有其他项目应采用更具意见的内部规则集。
这些建议有四种组合方式,导致可以选择四个规则集
- AcquiaDrupalMinimal基于Drupal编码标准,适用于所有公开的Drupal项目。
- AcquiaDrupalStrict基于AcquiaDrupal,并增加了更具意见的DrupalPractice标准。适用于所有内部Drupal项目。
- AcquiaPHPMinimal基于PSR-12,适用于所有公开的非Drupal项目。
- AcquiaPHPStrict基于AcquiaPHP,并增加了额外的、更具意见的标准。适用于所有内部的非Drupal项目。
安装与使用
-
通过Composer将Acquia PHP编码标准添加到您的项目中
composer require --dev acquia/coding-standards
-
通知PHP CodeSniffer标准和其依赖项的位置
-
强烈建议您使用Composer插件来处理此操作,例如
DealerDirect/phpcodesniffer-composer-installer
composer config extra.phpcodesniffer-search-depth 4 composer require --dev dealerdirect/phpcodesniffer-composer-installer
-
或者,将脚本添加到您的
composer.json
中处理{ "scripts": { "post-install-cmd": "@install-coding-standards", "post-update-cmd" : "@install-coding-standards", "install-coding-standards": "\"vendor/bin/phpcs\" --config-set installed_paths vendor/acquia/coding-standards/src/Standards,vendor/drupal/coder/coder_sniffer,vendor/phpcompatibility/php-compatibility,vendor/slevomat/coding-standard" } }
-
-
检查代码是否符合标准
./vendor/bin/phpcs --standard=AcquiaDrupalStrict --extensions=php,module,inc,install,test,profile,theme,css,info,txt,md,yml path/to/code
自动修复任何可能的标准违规
./vendor/bin/phpcbf --standard=AcquiaDrupalStrict --extensions=php,module,inc,install,test,profile,theme,css,info,txt,md,yml path/to/code
必须使用
--extensions
参数匹配选择的代码标准。对于AcquiaPHP,使用--extensions=php,inc,test,css,txt,md,yml
。 -
可选地为您的项目创建一个默认配置文件,这样您就不必每次都提供命令行参数(例如,如下所示)。这里有一个工作示例:
example/phpcs.xml.dist
。./vendor/bin/phpcs
修改
phpcs.xml.dist
以适应您的项目,特别是设置首选的代码标准和匹配的扩展。 -
可选地,将代码检查添加到您的Git预提交钩子中,以防止提交违反规则的代码。由于克隆仓库时不会复制客户端Git钩子,您可能希望使用如
BrainMaestro/composer-git-hooks
之类的自动化解决方案来管理它们,例如:example/composer.json
。 -
可选地,在PhpStorm或您选择的IDE或代码编辑器中配置PHP Code Sniffer集成。您可以导入
example/PhpStormInspections.xml
以设置新项目的默认集成。当您第一次打开或创建新项目时,PhpStorm应该会自动检测并基于这些默认值设置PHPCS检查。您只需在项目检查设置中取消选中“已安装的标准路径”,以便PhpStorm可以找到Acquia编码标准。
贡献
欢迎贡献!请参阅CONTRIBUTING.md。
许可证
版权所有(C)2019 Acquia,Inc。
本程序是自由软件:您可以按照自由软件基金会发布的GNU通用公共许可证第2版(以下简称“许可证”)的条款重新分发和/或修改它。
本程序以希望它可能对您有用的目的进行分发,但没有任何保证;甚至没有适销性或特定用途的隐含保证。有关详细信息,请参阅GNU通用公共许可证。