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

Reference custom php codesniffer sniffs from a ruleset that is not in the standards directory

我有一个包含一些自定义嗅探的规则集。我的项目中有规则集 directory/repository,但我不知道如何将自定义嗅探保留在那里。

如果我将亲戚 link 放入规则集中:

 <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 class 名称没有正确命名。

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

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

这将使以下规则生效。

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

这就是嗅探 class 名称:

class MyRuleset_Sniffs_SniffGroup_SniffNameSniff implements PHP_CodeSniffer_Sniff