我在标准中遇到包括外部嗅探的问题。使用最新版本的PHP_CodeSniffer 1.4.3,我不能包含一组嗅探器。我可以单独包含它们,但我想减少我的维护,只列出我不想要的那些。
使用ruleset.xml
<?xml version="1.0"?>
<ruleset name="ICAP Standards">
<description>ICAP Coding Standards for PHP_CodeSniffer</description>
<rule ref="Generic.PHP.UpperCaseConstant" />
</ruleset>
这适用于包括简单测试。但是,我想在此组中包含所有内容,并排除单个嗅探。
还在使用ruleset.xml PHP_CodeSniffer的ICAP编码标准
<rule ref="Generic">
<exclude name="Generic.PHP.LowerCaseConstant"/>
</rule>
</ruleset>
非工作ruleset.xml
<?xml version="1.0"?>
<ruleset name="ICAP Standards">
<description>ICAP Coding Standards for PHP_CodeSniffer</description>
<rule ref="Generic.PHP">
<exclude name="Generic.PHP.LowerCaseConstant"/>
</rule>
</ruleset>
此规则集不起作用,并在运行PHPCS时返回异常。
PHP_CodeSniffer_Exception: Referenced sniff Generic.PHP does not exist in C:\Program Files (x86)\PHP\pear\PHP\CodeSniffer.php on line 845
这是1.4.3版本,刚刚发布,PHP 5.4.8。
我的PHPCS -i确实将Generic显示为已安装的标准:
The installed coding standards are ICAP, MySource, PEAR, PHPCS, PSR1, PSR2, Squiz and Zend.
我在混合环境中工作,并且尽量避免使用路径,因为它们在Windows和Ubuntu 12.10之间存在很大差异。
答案 0 :(得分:4)
PHP_CodeSniffer不支持此排除方法。 ruleset.xml文件的文档位于:https://github.com/squizlabs/PHP_CodeSniffer/wiki/Annotated-ruleset.xml
总之,您只能排除特定的嗅探或特定的错误消息。
我注意到您也将此建议作为功能请求:http://pear.php.net/bugs/bug.php?id=19731
我和我的妻子还有另外一个孩子,我将要休息一段时间,但是当我回到新的一年时,我希望能够研究这种新的排斥方式。
感谢发布功能请求。