Пользовательские правила codeniffer / анализы

Я ищу пользовательские правила, расширяющие стандарт PSR2 для CodeSniffer, но не смог найти надежного решения.

Вот пример кода:

if ($var1==$var2) {
    $var3=1;
    $var4 = array("test"=>"test1");
}

Мне нужно обеспечить пробелы вокруг == >= <= и !=, а также при назначении переменных $var3 = 1; и =>.

Я создал собственный стандарт под названием MyStandard, который расширяет PSR-2, где я поместил правила цикломатической сложности, длины строк и отступов табуляции вместо пробелов, но не могу решить эти последние.

Изменить: мой текущий набор правил.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>

person Stanimir Stoyanov    schedule 13.11.2016    source источник
comment
github.com/squizlabs/PHP_CodeSniffer/ blob/master/CodeSniffer/ может быть отправной точкой для отступов вокруг оператора конкатенации.   -  person Mark Baker    schedule 13.11.2016
comment
@MarkBaker, спасибо! Кажется, что-то подавляет этот нюх. В настоящее время я просто вставляю код в MyStandard/Sniffs/MyStandard_ConcatenationSpacingSniff.php с соответствующим именем класса, и никаких видимых изменений не появляется...   -  person Stanimir Stoyanov    schedule 13.11.2016
comment
Я понял это благодаря @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. Можете ли вы предоставить свой комментарий в качестве ответа?   -  person Stanimir Stoyanov    schedule 13.11.2016


Ответы (1)


Разобрался, спасибо @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

Если кому интересно, вот полный набор правил.

person Stanimir Stoyanov    schedule 04.01.2017
comment
Привет, Станимир, я рад, что ты нашел решение. Не могли бы вы отметить это как принятый ответ? Это поможет другим увидеть, что в обзоре вопроса есть решение. - person Tomas Votruba; 22.05.2017
comment
Спасибо @TomášVotruba - person Stanimir Stoyanov; 26.05.2017
comment
Пожалуйста. Если вы хотите узнать больше о CodingStandard, проверьте это: tomasvotruba.cz/blog/2017/05/03/ - person Tomas Votruba; 26.05.2017
comment
Битая ссылка в ответе - person Scott Anderson; 01.10.2020
comment
Спасибо @СкоттАндерсон. Я нашел тот же файл и обновил ответ действующей ссылкой на 2020 год. - person Stanimir Stoyanov; 07.10.2020