Slevomat PHP_CodeSniffer 编码标准提供的嗅探分为三类:
= 自动错误修复
= 可以在本地抑制嗅探检查
安装 Slevomat Coding Standard 的推荐方法是通过 Composer。
{
"require-dev" : {
"slevomat/coding-standard" : " ~8.0 "
}
}
还建议安装 php-parallel-lint/php-parallel-lint,它可以检查源代码中的语法错误。嗅探依赖于处理后的代码在语法上有效(没有解析错误),否则它们可能会出现意外行为。建议在运行PHP_CodeSniffer
之前在构建工具中运行PHP-Parallel-Lint
,并在PHP-Parallel-Lint
失败时尽早退出构建过程。
您可以选择以下两种方法之一来仅运行代码库标准中选定的嗅探:
推荐的方法是通过仅引用选定的嗅探来编写您自己的ruleset.xml。这是一个示例ruleset.xml:
<? xml version = " 1.0 " ?>
< ruleset name = " AcmeProject " >
< config name = " installed_paths " value = " ../../slevomat/coding-standard " /> <!-- relative path from PHPCS source location -->
< rule ref = " SlevomatCodingStandard.Arrays.TrailingArrayComma " />
<!-- other sniffs to include -->
</ ruleset >
然后以通常的方式运行phpcs
可执行文件:
vendor/bin/phpcs --standard=ruleset.xml --extensions=php --tab-width=4 -sp src tests
您还可以在项目的ruleset.xml
中提及Slevomat Coding Standard并仅排除一些嗅探:
<? xml version = " 1.0 " ?>
< ruleset name = " AcmeProject " >
< rule ref = " vendor/slevomat/coding-standard/SlevomatCodingStandard/ruleset.xml " > <!-- relative path to your ruleset.xml -->
<!-- sniffs to exclude -->
</ rule >
</ ruleset >
然而,这不是使用 Slevomat Coding Standard 的推荐方法,因为在标准的次要版本之间移动时,您的构建可能会中断(如果您在composer.json
中使用^
或~
版本约束,则可能会发生这种情况)。即使在次要版本中,我们也会定期添加新的嗅探,这意味着您的代码很可能不符合软件包的新次要版本。
本标准中由 符号标记的嗅探支持自动修复编码标准违规行为。要自动修复代码,请运行 phpcbf 而不是 phpcs:
vendor/bin/phpcbf --standard=ruleset.xml --extensions=php --tab-width=4 -sp src tests
始终记住在执行自动修复之前备份代码并亲眼检查结果,因为自动修复程序有时会产生不需要的结果。
可以使用注释对特定代码段抑制本标准中由 符号标记的选定嗅探。考虑以下示例:
/**
* @param int $max
*/
public function createProgressBar ( $ max = 0 ): ProgressBar
{
}
参数$max
可以具有本机int
标量类型提示。但是因为父类中的方法没有这个typehint,所以这个也不能有。 PHP_CodeSniffer 显示以下错误:
----------------------------------------------------------------------
FOUND 1 ERROR AFFECTING 1 LINE
----------------------------------------------------------------------
67 | ERROR | [x] Method ErrorsConsoleStyle::createProgressBar()
| | does not have native type hint for its parameter $max
| | but it should be possible to add it based on @param
| | annotation "int".
| | (SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint)
如果我们想抑制这个错误而不是修复它,我们可以获取错误代码( SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint
)并将其与@phpcsSuppress
注释一起使用,如下所示:
/**
* @phpcsSuppress SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint
* @param int $max
*/
public function createProgressBar ( $ max = 0 ): ProgressBar
{
}
要使此存储库在您的计算机上工作,请克隆它并在存储库的根目录中运行这两个命令:
composer install
bin/phing
编写一些代码并编辑或添加单元测试后,再次运行 phing 以检查一切正常:
bin/phing
我们始终期待您的错误报告、功能请求和拉取请求。谢谢。
该项目遵守贡献者行为准则。通过参与此项目及其社区,您应该遵守此准则。