在PHP_CodeSniffer 1.4.3中加载Sniff子集时出错

时间:2012-12-04 22:59:07

标签: php codesniffer

我在标准中遇到包括外部嗅探的问题。使用最新版本的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之间存在很大差异。

1 个答案:

答案 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

我和我的妻子还有另外一个孩子,我将要休息一段时间,但是当我回到新的一年时,我希望能够研究这种新的排斥方式。

感谢发布功能请求。