PHPCS文件类型限制

6

我正在尝试为一个特定框架的“准则”创建自定义规则集。然而,我希望能够将sniffs限制为仅与.php或.phtml文件类型相关联。

在Sniffs中,是否有可能仅使用或忽略定义的文件类型,或者我需要在sniffs的process()方法中进行此检查?


在配置文件中,只处理你想要使用的标准的文件扩展名。这样做能够达到你想要的效果吗?创建你的规则集,然后通过命令行运行它来处理 .php 或 .phtml 文件。 - Steven Scott
1个回答

5
您可以使用规则集中的正则表达式指定排除模式。通过使用负向先行(或者选择后置)来将特定的嗅探或错误信息限制在符合模式的文件中。
以下示例仅在.phtml文件上运行DoubleQuoteUsage嗅探器:
<rule ref="Squiz.Strings.DoubleQuoteUsage">
  <exclude-pattern>*\.(?!phtml$)</exclude-pattern>
</rule>

但是当前的PHPCS版本使用|作为正则表达式的分隔符,而在PHP中对该字符进行转义似乎不起作用。我刚刚在phpcs-fixer分支(2.x版本系列)提交了更改,这样您就可以执行以下操作:

<rule ref="Squiz.Strings.DoubleQuoteUsage">
  <exclude-pattern>*\.(?!(php$|phtml$))</exclude-pattern>
</rule>

如果你想尝试一下,可以克隆git存储库,检查phpcs-fixer分支并直接运行代码。或者你可以通过composer要求2.0.*@dev
如果不这样做,你需要在sniff的process()方法中自己进行文件名检查。

谢谢回复 Greg,太棒了。 - Adam Paterson
如果不行,你需要在嗅探器的process()方法中自己进行文件名检查。最后一行是最珍贵的。 - Alex Skrypnyk
请注意,一旦版本3发布(尚未有发布日期,仍在等待alpha版本发布),这将在ruleset.xml文件中本地实现。功能请求在此处:https://github.com/squizlabs/PHP_CodeSniffer/issues/656 - Greg Sherwood

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接