Настройка phpcs для запрета пробелов после закрывающей скобки и перед закрывающей скобкой

Большинство наших проектов — это WordPress, и хотя мы согласны с большинством установленных им стандартов кодирования, есть некоторые, с которыми мы не согласны и не хотим использовать их в наших собственных частных проектах. Каким-то образом части этих разногласий все еще остаются в кодовой базе из-за того, что разработчики копируют решения, которые они нашли в Интернете, и я хотел бы предотвратить это с помощью phpcs. Не только потому, что копирование сомнительно (качество этих кодовых фрагментов часто ужасно), но и потому, что их сложнее читать и редактировать.

Вот как WordPress говорит вам сделать это: fn_call( array( 1, 2, 3 ) );

Вот как мы это делаем: fn_call([1, 2, 3]);

Я нашел способ исключить эти правила из стандартов кодирования WordPress.

<exclude name="PEAR.Functions.FunctionCallSignature.SpaceBeforeCloseBracket" />
<exclude name="PEAR.Functions.FunctionCallSignature.SpaceAfterOpenBracket" />
<exclude name="WordPress.Arrays.ArrayDeclaration.NoSpaceAfterOpenParenthesis" />

но как мне обеспечить отсутствие пробелов? Я ничего не могу найти по этому поводу.


person Christian    schedule 23.05.2017    source источник
comment
Вы просто используете XML-файл набора правил? Можете выложить полный файл?   -  person miken32    schedule 23.05.2017


Ответы (1)


На самом деле вы не хотите исключать эти 2 правила PEAR. Вместо этого вы захотите переопределить параметр, который использует стандарт WordPress, изменив его с 1 требуемого места на 0 требуемых пробелов.

WordPress Core ruleset.xml файл включает в себя этот раздел:

<rule ref="PEAR.Functions.FunctionCallSignature">
    <properties>
        <property name="requiredSpacesAfterOpen" value="1"/>
        <property name="requiredSpacesBeforeClose" value="1"/>
    </properties>
</rule>

По умолчанию PEAR.Functions.FunctionCallSignature снифф требует наличия 0 пробелов после открывающей скобки и 0 пробелов перед закрывающей скобкой, что именно то, что вам нужно. Но стандарт WordPress меняет эти настройки на 1 space.

В вашем файле ruleset.xml после того, как вы включили стандарт WordPress, поместите в этот раздел:

<rule ref="PEAR.Functions.FunctionCallSignature">
    <properties>
        <property name="requiredSpacesAfterOpen" value="0"/>
        <property name="requiredSpacesBeforeClose" value="0"/>
    </properties>
</rule>

Наряду с любыми другими исключениями, которые вы хотите. Но не исключайте сообщения об ошибках PEAR.Functions.FunctionCallSignature.SpaceBeforeCloseBracket и PEAR.Functions.FunctionCallSignature.SpaceAfterOpenBracket, иначе вы не получите никаких ошибок при вызове функций.

person Greg Sherwood    schedule 24.05.2017
comment
Выглядит законно! Спасибо! Неудивительно, что я не смог найти ничего по этому вопросу, я искал не в том направлении. - person Christian; 24.05.2017