我是否可以覆盖每个文件使用过的phpcs规则集,如果是这样,怎么做?

时间:2012-11-12 12:09:50

标签: php codesniffer

最近我们迁移到git并在我们的中央服务器上实现(现在发布)接收挂钩以向开发人员发送报告,以及制作几个工具使我们能够在我们的开发环境中使用phpcs自动检查我们的代码标准。

这一切都很好,花花公子,效果很好,但我们希望能够始终依赖于我们的代码标准,而不是忽略每个不符合逻辑原因的文件。现在,我们有自己的规则集,它会覆盖默认PEAR标准中的一些内容,但如果可能的话,我们希望更进一步。

我们的问题是虽然PEAR标准适用于所有类/业务逻辑,但在视图文件中我们想要放松规则,关闭括号需要在他们自己的行上。问题是我们主要在这些文件中定义html并且我们拥有的唯一控件结构是简单的if-else或foreach语句,并打开php,然后添加换行符,结束括号,换行符和关闭php有点愚蠢的imo。

必需的语法有效:

<?php
}
// end of some if statement ?>

我们反而希望用于观看:

<?php } // end of some if statement ?>

这会使我们的代码更具可读性......

我们不喜欢替代语法和(if(..): ... endif;),afaik主要是因为这里的有效性也存在一些问题(这都是关于空白的......)。

忽略整个文件(// @codingStandardsIgnoreFile)不是我们的选择。

TL;博士

所以我们想要做的是为我们的视图文件定义一个单独的规则集,这样我们仍然有一个标准可以遵守,但是这些前端的规则很宽松,所以我们的代码仍然可以读取。

我对phpcs还不太了解,也无法使用关键字找到任何解决方案我虽然是合乎逻辑的...任何建议也可以制作符合PEAR的整洁视图文件......

1 个答案:

答案 0 :(得分:6)

如果仅涉及一些要从某些文件中排除的消息,则可以将这些排除项直接放入ruleset.xml文件中。例如:

<!--
  You can also be more specific and just exclude some messages.
  Please note that all message-specific ignore patterns are
  checked using absolute paths.

  The code here will just hide the ContainsVar error generated by the
  Squiz DoubleQuoteUsage sniff for files that match either of the two
  exclude patterns.
 -->
<rule ref="Squiz.Strings.DoubleQuoteUsage.ContainsVar">
  <exclude-pattern>*/tests/*</exclude-pattern>
  <exclude-pattern>*/data/*</exclude-pattern>
</rule>

我不确定您的视图文件存储在哪里,但如果您可以使用排除模式(基本上只是正则表达式)匹配它们,那么您将能够放宽它们的一些规则。

找出ref =“”位的最佳方法是在视图文件上运行phpcs并使用-s命令行参数。对于每条消息,您将获得一个唯一的代码,然后您可以使用该代码将特定的排除模式添加到规则集中。

您还可以在规则集文件中执行许多其他操作。 Check out the docs here.