PhpCS排除嗅探不起作用

时间:2016-11-07 14:45:21

标签: codesniffer phpcodesniffer phpcs

我在我的计算机上运行Php 7.0,但我需要检查在7.05.6中执行的代码。因此,我得到了一大堆

  

Squiz.Commenting.FunctionComment.ScalarTypeHintMissing

使用-s标志时出现

错误。

我已经通过composer为安装了2.6的项目安装了PhpCS。因为我想通过作曲家在全球范围内安装--exclude的许多项目使用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全局配置文件的位置

1 个答案:

答案 0 :(得分:4)

您不能排除这样的单个消息 - 您需要在使用命令行时排除整个嗅探。所以你需要做--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>

如果您可以在PHP7上运行PHP 5.6,您也可以使用PHP 5.6运行PHPCS,它会自动隐藏这些消息,因为它知道PHP的版本不支持它们。