我有一个带有一些自定义嗅探器的规则集。我的项目目录/存储库中有规则集,但我不知道如何将自定义嗅探器保留在那里。
如果我在规则集中放入一个相对链接:
<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文件计算出来的,而不是从规则集计算出来的。
是否可以在不使用绝对路径的情况下使规则集指向自定义嗅探?
我需要使用相对路径,因为这是一个包含多个实例的存储库。
排序。
它确实有效。我的问题是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