6

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

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

我们的问题是,虽然 PEAR 标准非常适合所有类/业务逻辑,但在视图文件中,我们希望放宽规则,比如右括号需要在自己的行中。问题是我们主要在这些文件中定义 html,我们仅有的控制结构是简单的 if-else 或 foreach 语句,打开 php,然后添加换行符,右括号,换行符,关闭 php 有点傻 imo。

必需的语法是有效的:

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

我们希望将其用于视图:

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

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

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

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

tl;博士

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

我对 phpcs 还不太了解,并且我自己也找不到任何使用关键字的解决方案,我认为这是合乎逻辑的......也欢迎任何关于制作也符合 PEAR 的整洁视图文件的建议......

4

1 回答 1

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命令行参数。对于每条消息,您将获得一个唯一代码,然后您可以使用该代码将特定的排除模式添加到您的规则集中。

您还可以在规则集文件中执行许多其他操作。在这里查看文档。

于 2012-11-12T21:47:02.293 回答