Проблема с отступом регистра CodeSniffer

Я использую Netbeans 7.1.1 с codeniffer. Всякий раз, когда у меня есть оператор case, я получаю ошибки отступа, например. для следующего кода:

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

Я получаю «Строка имеет неправильный отступ; ожидалось 8 пробелов, найдено 12» для каждой case строки. Когда я удаляю 4 пробела из этих строк, например.

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

Я получаю сообщение об ошибке "Строка имеет неправильный отступ; ожидалось 12 пробелов, найдено 8". Похоже, шифровальщик не может принять решение, что весьма забавно. Веселье заканчивается, когда мои коммиты терпят неудачу из-за хука codeniffer.

В чем проблема с моим отступом case?

ОБНОВЛЕНИЕ: у меня есть только одно правило отступа в моем наборе правил:

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

person Oleg Ishenko    schedule 06.03.2013    source источник
comment
Пожалуйста, покажите, какие конкретные правила codesniffer вызывают эти ошибки.   -  person hakre    schedule 06.03.2013
comment
Я думаю, класс сниффера Generic_Sniffs_WhiteSpace_ScopeIndentSniff   -  person Oleg Ishenko    schedule 06.03.2013
comment
Когда я пробую это на вашем первом блоке кода (при условии, что SWITCH имеет правильный отступ или вообще не имеет отступа в тестовом файле), я не получаю сообщений об ошибках из сниффа. Я использовал команду: phpcs temp.php --standard=Generic --sniffs=Generic.WhiteSpace.ScopeIndent   -  person Greg Sherwood    schedule 07.03.2013


Ответы (2)


У меня была точно такая же проблема с использованием <rule ref="PEAR.WhiteSpace.ScopeIndent" />, и я исправил ее, просто переключившись на <rule ref="Generic.WhiteSpace.ScopeIndent" />

person claudod    schedule 06.07.2016

Также можно игнорировать проблемы с отступами для определенных токенов:

<!-- 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: правила.

Вот список токенов

person rideron89    schedule 27.11.2018