CodeSniffer案例缩进问题


CodeSniffer case indentation issue

我使用Netbeans 7.1.1与codesniffer。每当我有一个case语句,我得到缩进错误,例如以下代码:

    switch ((int) $itemData['column_count']) {
        case 4:
            return 'grid-4columns';
        case 6:
            return 'grid-6columns';
        default:
            return '';
    }

我得到"Line缩进不正确;期望8个空格,发现每个case行12"。当我从这些行中删除4个空格时,例如

    switch ((int) $itemData['column_count']) {
    case 4:
        return 'grid-4columns';
    case 6:
        return 'grid-6columns';
    default:
        return '';
    }

我得到错误"行缩进不正确;预期12个空间,发现8"。看起来代码嗅探不能下定决心,这很有趣。当我的提交因为代码区别钩子而失败时,乐趣就结束了。

我的case缩进的问题是什么?

更新:我在我的规则集中只有一个缩进规则:

<rule ref="Generic.WhiteSpace.ScopeIndent" />

我使用<rule ref="PEAR.WhiteSpace.ScopeIndent" />有完全相同的问题,我修复了它只是切换到<rule ref="Generic.WhiteSpace.ScopeIndent" />

也可以忽略特定标记的缩进问题:

<!-- If you are using Generic -->
<rule ref="Generic.WhiteSpace.ScopeIndent">
    <properties>
        <property name="ignoreIndentationTokens" type="array" value="T_COMMENT,T_DOC_COMMENT_OPEN_TAG,T_CASE" />
    </properties>
</rule>
<!-- If you are using PEAR -->
<rule ref="PEAR.WhiteSpace.ScopeIndent">
    <properties>
        <property name="ignoreIndentationTokens" type="array" value="T_COMMENT,T_DOC_COMMENT_OPEN_TAG,T_CASE" />
    </properties>
</rule>

注意T_CASE。这可以防止嗅探器检查您的case:规则。

这里是一个标记列表