PHP_CodeSniffer 标准安装器插件:提升代码质量的利器
[![版本][packagist-version-shield]][packagist-version] [![包信息][packagist-shield]][packagist]
[![行为准则][code-of-conduct-shield]][code-of-conduct]
这个是针对 PHP_CodeSniffer 的 Composer 安装器插件,帮助您轻松管理并安装编码标准(规则集),无需再为符号链接目录或更改配置文件而烦恼。
使用方法
通过 [Composer][composer] 可以快速安装这个开发依赖:
composer require --dev dealerdirect/phpcodesniffer-composer-installer
如果使用的是 Composer 2.2 或更高版本,系统会提示您授权执行插件代码,必须给予许可才能正常工作。
一旦获得授权,Composer 将自动在您的 composer.json
文件中添加以下配置:
{
"config": {
"allow-plugins": {
"dealerdirect/phpcodesniffer-composer-installer": true
}
}
}
对于 Composer 版本低于 2.2 的情况,可以先运行以下命令手动授予权限:
composer config allow-plugins.dealerdirect/phpcodesniffer-composer-installer true
一切准备就绪!
兼容性
该插件兼容以下环境:
- PHP 5.4+,7.x 和 8.x
- [Composer][composer] 1.x 和 2.x
- [PHP_CodeSniffer][codesniffer] 2.x 和 3.x
请注意,使用 Composer 2.x 或 PHP 8.0 需要明确指定版本 0.7.0
(或以上)。
工作原理
简单来说,插件执行以下步骤:
- 搜索所有已安装的 Composer 包中的
phpcodesniffer-standard
。 - 扫描匹配到的包和项目本身,查找 PHP_CodeSniffer 规则集。
- 调用 PHP_CodeSniffer 并设置
installed_paths
选项。
示例项目
这是一个示例项目,包含了多个 phpcodesniffer-standard
包:
{
"name": "example/project",
"description": "只是一个示例项目",
"type": "project",
"require": {},
"require-dev": {
"dealerdirect/phpcodesniffer-composer-installer": "*",
"object-calisthenics/phpcs-calisthenics-rules": "*",
"phpcompatibility/php-compatibility": "*",
"wp-coding-standards/wpcs": "*"
},
"config": {
"allow-plugins": {
"dealerdirect/phpcodesniffer-composer-installer": true
}
}
}
运行 composer install
后,PHP_CodeSniffer 即可正常使用:
$ ./vendor/bin/phpcs -i
已安装的编码标准有:MySource, PEAR, PSR1, PSR2, PSR12, Squiz, Zend, ObjectCalisthenics,
PHPCompatibility, WordPress, WordPress-Core, WordPress-Docs 和 WordPress-Extra
直接调用插件
在某些情况下,可能需要直接调用插件的功能,如开发阶段或持续集成(CI)环境中。由于插件需要依赖 Composer,可以通过项目 composer.json
中的 script
配置来实现。
在 composer.json
添加如下配置:
{
"scripts": {
"install-codestandards": [
"PHPCSStandards\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\Plugin::run"
]
}
}
然后通过 composer run-script install-codestandards
命令执行,或者在其他脚本配置中引用。
修改标准搜索深度
默认情况下,插件会向上最多搜索三层目录寻找编码标准。如果需要自定义搜索深度,可以在 composer.json
的 extra
部分设置:
{
"extra": {
"phpcodesniffer-search-depth": 5
}
}
注意事项
全局安装插件时,Composer 加载的是全局版本的插件,而不是项目本地指定的版本,可能会导致版本不一致的问题。尽管这是 Composer 文档中提到的行为,但仍可能引起混淆。
开发编码标准
遵循 [PHP_CodeSniffer][codesniffer] 文档和 [教程][tutorial],可以正常开发编码标准,并创建一个包含编码标准的 Composer 包,确保其 type
设置为 phpcodesniffer-standard
。
例如:
{
"name" : "acme/phpcodesniffer-our-standards",
"description" : "Acme 公司的所有编码标准",
"require" : {
"php" : ">=5.4.0",
"squizlabs/php_codesniffer" : "^3.6"
},
"type" : "phpcodesniffer-standard"
}
在编码标准中要求此插件
如果您希望自己的编码标准能自动处理其依赖的外部 PHPCS 标准的安装,只需在你的 composer.json
的 require
部分添加对这个插件的依赖,而不是 require-dev
,这样可以简化用户的安装过程,减少关于如何设置 installed_paths
的询问。
但是,请务必确保版本要求灵活,以免导致“依赖地狱”。
更新日志与贡献指南
我们在每个发行版的 [GitHub 发布页面][changelog] 上记录了变更日志。想要参与贡献?查看我们的 [贡献指南][contributing-guidelines]。
作者与贡献者
感谢 [Franck Nijhof][frenck](Dealerdirect B.V. 员工)的原始想法和初始设置,以及所有做出贡献的人们。完整的作者和贡献者列表请查看 [贡献者页面][contributors]。
许可协议
本项目采用 MIT 许可,详细信息见许可证文本。