引用自定义php codesniffer从不在标准目录中的规则集中嗅探

时间:2015-02-19 15:41:08

标签: php codesniffer phpcodesniffer

我有一个带有一些自定义嗅探的规则集。我的项目目录/存储库中有规则集,但我无法弄清楚如何在那里保留自定义嗅探器。

如果我将相对链接放入规则集:

 <rule ref="./MySniffs/foo"/> 

然后它抛出了这个错误:

PHP_CodeSniffer_Exception: Referenced sniff "./MySniffs/foo" 
does not exist in C:\path\to\php\php\pear\PHP\CodeSniffer.php

因此,相对路径是从CodeSniffer.php文件中得出的,而不是从规则集中得出的。

是否可以在不使用绝对路径的情况下使规则集指向自定义嗅探?

我需要使用相对路径,因为这是一个包含多个实例的存储库。

1 个答案:

答案 0 :(得分:2)

对它进行排序。

确实有效。我的问题是嗅探类名称没有正确命名。

包含规则集的文件夹必须是sniff类名称的一部分。需要以下路径。

/path/to/project/MyRuleset/ruleset.xml
/path/to/project/MyRuleset/Sniffs/SniffGroup/SniffNameSniff.php

这将使以下规则有效。

 <rule ref="MyRuleset.SniffGroup.SniffName"/> 

这就是嗅觉类名:

class MyRuleset_Sniffs_SniffGroup_SniffNameSniff implements PHP_CodeSniffer_Sniff