【发布时间】:2016-11-13 15:01:45
【问题描述】:
我正在寻找扩展 CodeSniffer 的 PSR2 标准的自定义规则,但找不到可靠的解决方案。
这是一个示例代码:
if ($var1==$var2) {
$var3=1;
$var4 = array("test"=>"test1");
}
我需要在 == >= <= 和 != 以及在分配变量 $var3 = 1; 和 => 时强制使用空格。
我创建了一个名为 MyStandard 的自定义标准,它扩展了 PSR-2,我在其中设置了圈复杂度、行长和制表符缩进而不是空格的规则,但无法解决最后这些问题。
编辑:我当前的 ruleset.xml 如下所示:
<?xml version="1.0"?>
<ruleset name="MyStandard">
<description>PSR2 with tabs instead of spaces.</description>
<arg name="tab-width" value="4"/>
<rule ref="PSR2">
<exclude name="Generic.WhiteSpace.DisallowTabIndent"/>
<exclude name="PSR1.Classes.ClassDeclaration.MissingNamespace"/>
</rule>
<rule ref="Generic.WhiteSpace.DisallowSpaceIndent"/>
<rule ref="Generic.WhiteSpace.ScopeIndent">
<properties>
<property name="indent" value="4"/>
<property name="tabIndent" value="true"/>
</properties>
</rule>
<rule ref="Generic.Files.LineLength">
<properties>
<property name="lineLimit" value="140"/>
<property name="absoluteLineLimit" value="160"/>
</properties>
</rule>
<rule ref="Squiz.WhiteSpace.SuperfluousWhitespace">
<properties>
<property name="ignoreBlankLines" value="false"/>
</properties>
</rule>
<rule ref="Squiz.WhiteSpace.SuperfluousWhitespace.StartFile">
<severity>10</severity>
</rule>
<rule ref="Squiz.WhiteSpace.SuperfluousWhitespace.EndFile">
<severity>10</severity>
</rule>
<rule ref="Generic.Metrics.CyclomaticComplexity"/>
</ruleset>
【问题讨论】:
-
github.com/squizlabs/PHP_CodeSniffer/blob/master/CodeSniffer/… 可能是连接运算符周围间距的起点
-
@MarkBaker 谢谢!似乎有什么东西压倒了这种嗅觉。我目前只是将代码粘贴到具有适当类名的
MyStandard/Sniffs/MyStandard_ConcatenationSpacingSniff.php中,并且没有出现任何可见的变化...... -
感谢@MarkBaker,我已经弄明白了。我使用了建议的示例并对其进行了修改以检查
T_EQUAL, T_IS_NOT_EQUAL, T_IS_EQUAL,T_DOUBLE_ARROW, T_IS_IDENTICAL, T_IS_NOT_IDENTICAL, T_IS_GREATER_OR_EQUAL, T_IS_SMALLER_OR_EQUAL。你能提供你的评论作为答案吗?
标签: php codesniffer phpcodesniffer