Я ищу пользовательские правила, расширяющие стандарт PSR2 для CodeSniffer, но не смог найти надежного решения.Пользовательские коды других правил/sniffs
Вот пример кода:
if ($var1==$var2) {
$var3=1;
$var4 = array("test"=>"test1");
}
Мне нужно применять пробелы вокруг ==
>=
<=
и !=
, а также при назначении переменных $var3 = 1;
и =>
, а также.
Я создал пользовательский стандарт с именем MyStandard
, который расширяет PSR-2, где я установил правила для циклической сложности, длины строк и отступов табуляции вместо пробелов, но не может решить эти последние.
Edit: Мой текущий 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>
https://github.com/squizlabs/PHP_CodeSniffer/blob/master/CodeSniffer/Standards/Squiz/Sniffs/Strings/ConcatenationSpacingSniff.php может быть отправной точкой для расстояния вокруг конкатенации оператора –
@MarkBaker спасибо! Кажется, что что-то переопределяет этот нюх. Я сейчас просто вставляю код в «MyStandard/Sniffs/MyStandard_ConcatenationSpacingSniff.php» с именем класса approriate и никаких видимых изменений не появляется ... –
Я понял это благодаря @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'. Можете ли вы представить свой комментарий в качестве ответа? –