【问题标题】:PhpCS exclude sniffs not workingPhpCS 排除嗅探不起作用
【发布时间】:2017-03-20 23:01:42
【问题描述】:

我在我的机器上运行 Php 7.0,但我需要检查在 7.05.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 全局配置文件,则加分

【问题讨论】:

    标签: codesniffer phpcodesniffer phpcs


    【解决方案1】:

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

    【讨论】:

    • 谢谢 Greg,我会试试的。
    猜你喜欢
    • 2020-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-15
    • 2020-06-02
    • 2017-09-05
    • 1970-01-01
    相关资源
    最近更新 更多