首先让我承认我昨天第一次遇到Code Sniffer。
我想为我的ZF 1.x项目设置自定义规则文件。但是,所有Zend片段都不适用。
又一个问题,我不想重新发现轮子(& I cant)所以需要使用现有的代码片段。
问题1:问题在于,如何知道我想要的规则是否存在现有代码段。作为最后一个选项,我总是可以去测试每个片段,但这显然不是最有效的方法。最好的方法是浏览现有代码段的文档,但单个代码段的文档在哪里?
问题2的背景
我需要一些复杂的规则,比如Doc评论块(只是一个例子,我不打算全部实现):
显然有很多自定义要求,所以我想我永远不会得到现有的代码片段,需要编写自定义代码段,但如何?我已经浏览了一些片段的php文件,乍一看,它看起来有点复杂。只有两个选项,了解完整的CS代码,在这种情况下,我更喜欢使用phabricator进行人工审核,或者阅读文档,这些文档似乎并不完整且有用。
问题2:接下来的问题是,在需要的情况下,哪些方法可以了解CS代码并编写自己的代码?
PS:在提出这个问题之前,我已经浏览了pear.php.net上提供的所有10页CS文档,这10页完全没有回答上述两个问题。
首次评论后修改
我现有的规则集文件:
<?xml version="1.0"?>
<ruleset name="eetest">
<description>Below are the standard builds based on coding standards need to follow in
BAS development.</description>
<!-- Include some specific sniffs -->
<rule ref="Generic.CodeAnalysis.UnusedFunctionParameter"/>
<rule ref="Generic.Commenting.Todo"/>
<rule ref="Generic.ControlStructures.InlineControlStructure"/>
<rule ref="Generic.Formatting.DisallowMultipleStatements"/>
<rule ref="Generic.Formatting.SpaceAfterCast"/>
<rule ref="Generic.Functions.FunctionCallArgumentSpacing"/>
<rule ref="Generic.NamingConventions.ConstructorName"/>
<rule ref="Generic.NamingConventions.UpperCaseConstantName"/>
<rule ref="Generic.PHP.DeprecatedFunctions"/>
<rule ref="Generic.PHP.DisallowShortOpenTag"/>
<rule ref="Generic.PHP.LowerCaseKeyword"/>
<rule ref="Generic.Strings.UnnecessaryStringConcat"/>
<rule ref="Generic.WhiteSpace.DisallowTabIndent"/>
<rule ref="Generic.WhiteSpace.ScopeIndent"/>
<rule ref="PEAR.ControlStructures.MultiLineCondition"/>
<rule ref="PEAR.Files.IncludingFile"/>
<rule ref="PEAR.Formatting.MultiLineAssignment"/>
<rule ref="Zend.Debug.CodeAnalyzer"/>
<rule ref="Zend.NamingConventions.ValidVariableName"/>
<rule ref="Zend.Files.ClosingTag"/>
<!-- Method names MUST be declared in camelCase(). -->
<rule ref="Generic.NamingConventions.CamelCapsFunctionName">
<properties>
<property name="strict" value="true"/>
</properties>
</rule>
<!-- We don't want gsjlint throwing errors for things we already check -->
<rule ref="Generic.Debug.ClosureLinter">
<properties>
<property name="errorCodes" type="array" value="0210"/>
<property name="ignoreCodes" type="array" value="0001,0110,0240"/>
</properties>
</rule>
<rule ref="Generic.Debug.ClosureLinter.ExternalToolError">
<message>%2$s</message>
</rule>
<!-- Only one argument per line in multi-line function calls -->
<rule ref="PEAR.Functions.FunctionCallSignature">
<properties>
<property name="allowMultipleArguments" value="false"/>
</properties>
</rule>
</ruleset>
直到现在还没有自定义PHP代码,因为我正在努力理解sippet代码正在做什么。