【问题标题】:Use PSR-2 with exceptions in PHP CodeSniffer在 PHP CodeSniffer 中使用带有异常的 PSR-2
【发布时间】:2016-04-12 05:47:01
【问题描述】:

我正在尝试为 PHP CodeSniffer 设置一个规则集,以在一组开发人员中强制执行代码样式,但我遇到了一些麻烦。

我们希望遵守 PSR-2,除了两件事。我们希望类声明在同一行有左大括号,对于函数也一样。第一个我设法修复了,但函数的同一行上的左大括号错误不会消失。

我已将其追溯到嗅探 Generic.Functions.OpeningFunctionBrace.BsdAllman 和错误 BraceOnSameLine,但将此排除添加到我的规则集没有任何作用。

我的规则集如下所示:

<?xml version="1.0"?>
<ruleset name="OrgXYZ">
    <description>The coding standard for Organization XYZ.</description>
    <rule ref="PSR2">
        <exclude name="PSR2.Classes.ClassDeclaration.OpenBraceNewLine"/>
        <exclude name="Generic.Functions.OpeningFunctionBraceBsdAllman.BraceOnSameLine"/>
    </rule>
</ruleset>

我试图从报告中删除的消息是:

15 | ERROR | Opening brace should be on a new line

这是我第一次尝试自己的规则集,我真的很茫然。我已经用谷歌搜索、搜索并尝试了所有看起来的东西。

【问题讨论】:

  • 您是否在命令行中包含您的规则集以供嗅探器使用?
  • 是的。虽然找到了解决方案。见下文:-)

标签: php codesniffer


【解决方案1】:

发现问题。 我迷失了 PSR2 规则集中包含的内容,并排除了错误的内容。 添加这个解决了它:

<exclude name="Squiz.Functions.MultiLineFunctionDeclaration.BraceOnSameLine"/>

【讨论】:

  • 重要的是要注意,排除此嗅探只会抑制将左大括号放在同一行上的错误。它确实 not 自动保证将左大括号放在 new 行上会被标记为错误。我还没有找到可以做到这一点的嗅探器......
  • Generic.Functions.OpeningFunctionBraceKernighanRitchie.BraceOnNewLine 会将新行左大括号标记为错误。
【解决方案2】:

调试代码嗅探器的方法是使用 -s 标志,显示调用的嗅探器。例如

phpcs -s ugly.php

将结果添加到你的项目根phpcs.xml中的exclude标签,比如你的demo

【讨论】:

    猜你喜欢
    • 2015-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-17
    • 1970-01-01
    • 2012-08-12
    • 1970-01-01
    • 2013-06-15
    相关资源
    最近更新 更多