PhpCS 排除嗅探不起作用
PhpCS exclude sniffs not working
我在我的机器上 运行 Php 7.0
但我需要检查在 7.0
和 5.6
中执行的代码。因此,我得到了
Squiz.Commenting.FunctionComment.ScalarTypeHintMissing
使用 -s
标志时出错。
我已经通过 composer 为安装了 2.6
的项目安装了 PhpCS。因为我想为一些项目使用 --exclude
标志,所以我通过 composer 全局安装了 2.7
。
我正在尝试使用新的 --exclude
标志,但我总是遇到问题。首先我尝试了
phpcs -n --standard=phpcsdocblocks.xml --exclude=Squiz.Commenting.FunctionComment.ScalarTypeHintMissing src/
但它抱怨嗅探不存在,所以我删除了 Squiz
前缀和 phpcs 运行,但忽略了标志。我尝试了很多嗅探,但没有任何例外。
我也尝试了 --sniffs
标志,但嗅探被忽略了。我不明白我忽略了什么。
我需要通过 CLI 忽略这些嗅探。
作为参考,phpcsdocblocks.xml 包含
<?xml version="1.0"?>
<ruleset name="MyStandard">
<description>My custom coding standard.</description>
<rule ref="Squiz.Commenting.FunctionComment" />
<rule ref="Squiz.Commenting.FunctionCommentThrowTag" />
<rule ref="Squiz.Commenting.VariableComment" />
</ruleset>
编辑: 如果有人能告诉我在 ubuntu
上哪里可以找到 phpcs 全局配置文件,加分
您不能像这样排除单个消息 - 使用命令行时需要排除整个嗅探。所以你需要做类似 --exclude=Squiz.Commenting.FunctionComment
.
的事情
但这可能不是您想要的,因为它排除了来自该嗅探的所有消息。因此,您需要忽略 ruleset.xml 文件中的这条特定消息,可能有不同的文件用于 php5 和 php7 测试。我想 PHP5 会只包含 PHP7 一个,然后排除特定消息。
类似于phpcsdocblocks56.xml:
<?xml version="1.0"?>
<ruleset name="Custom Standard">
<rule ref="./phpcsdocblocks.xml" />
<rule ref="Squiz.Commenting.FunctionComment.ScalarTypeHintMissing">
<severity>0</severity>
</rule>
</ruleset>
或者这可能更干净:
<?xml version="1.0"?>
<ruleset name="Custom Standard">
<rule ref="./phpcsdocblocks.xml">
<exclude name="Squiz.Commenting.FunctionComment.ScalarTypeHintMissing"/>
</rule>
</ruleset>
如果你可以 运行 PHP 5.6 在你的机器上 PHP7,你也可以 运行 PHPCS 使用 PHP 5.6 并且它会自动隐藏这些消息,因为它知道 PHP 的版本不支持它们。
我在我的机器上 运行 Php 7.0
但我需要检查在 7.0
和 5.6
中执行的代码。因此,我得到了
Squiz.Commenting.FunctionComment.ScalarTypeHintMissing
使用 -s
标志时出错。
我已经通过 composer 为安装了 2.6
的项目安装了 PhpCS。因为我想为一些项目使用 --exclude
标志,所以我通过 composer 全局安装了 2.7
。
我正在尝试使用新的 --exclude
标志,但我总是遇到问题。首先我尝试了
phpcs -n --standard=phpcsdocblocks.xml --exclude=Squiz.Commenting.FunctionComment.ScalarTypeHintMissing src/
但它抱怨嗅探不存在,所以我删除了 Squiz
前缀和 phpcs 运行,但忽略了标志。我尝试了很多嗅探,但没有任何例外。
我也尝试了 --sniffs
标志,但嗅探被忽略了。我不明白我忽略了什么。
我需要通过 CLI 忽略这些嗅探。
作为参考,phpcsdocblocks.xml 包含
<?xml version="1.0"?>
<ruleset name="MyStandard">
<description>My custom coding standard.</description>
<rule ref="Squiz.Commenting.FunctionComment" />
<rule ref="Squiz.Commenting.FunctionCommentThrowTag" />
<rule ref="Squiz.Commenting.VariableComment" />
</ruleset>
编辑: 如果有人能告诉我在 ubuntu
上哪里可以找到 phpcs 全局配置文件,加分您不能像这样排除单个消息 - 使用命令行时需要排除整个嗅探。所以你需要做类似 --exclude=Squiz.Commenting.FunctionComment
.
但这可能不是您想要的,因为它排除了来自该嗅探的所有消息。因此,您需要忽略 ruleset.xml 文件中的这条特定消息,可能有不同的文件用于 php5 和 php7 测试。我想 PHP5 会只包含 PHP7 一个,然后排除特定消息。
类似于phpcsdocblocks56.xml:
<?xml version="1.0"?>
<ruleset name="Custom Standard">
<rule ref="./phpcsdocblocks.xml" />
<rule ref="Squiz.Commenting.FunctionComment.ScalarTypeHintMissing">
<severity>0</severity>
</rule>
</ruleset>
或者这可能更干净:
<?xml version="1.0"?>
<ruleset name="Custom Standard">
<rule ref="./phpcsdocblocks.xml">
<exclude name="Squiz.Commenting.FunctionComment.ScalarTypeHintMissing"/>
</rule>
</ruleset>
如果你可以 运行 PHP 5.6 在你的机器上 PHP7,你也可以 运行 PHPCS 使用 PHP 5.6 并且它会自动隐藏这些消息,因为它知道 PHP 的版本不支持它们。