从不在标准目录中的规则集引用自定义 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
我有一个包含一些自定义嗅探的规则集。我的项目中有规则集 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