2016-11-13 7 views
1

Я ищу пользовательские правила, расширяющие стандарт 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> 
+0

https://github.com/squizlabs/PHP_CodeSniffer/blob/master/CodeSniffer/Standards/Squiz/Sniffs/Strings/ConcatenationSpacingSniff.php может быть отправной точкой для расстояния вокруг конкатенации оператора –

+0

@MarkBaker спасибо! Кажется, что что-то переопределяет этот нюх. Я сейчас просто вставляю код в «MyStandard/Sniffs/MyStandard_ConcatenationSpacingSniff.php» с именем класса approriate и никаких видимых изменений не появляется ... –

+0

Я понял это благодаря @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'. Можете ли вы представить свой комментарий в качестве ответа? –

ответ

1

Фигурные это, благодаря @MarkBaker.

Я использовал предложенный sample и модифицировал его, чтобы проверить 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

Если кому-то интересно, вот complete ruleset.

+0

Эй, Станимир, я рад, что вы нашли решение. Не могли бы вы отметить это как принятый ответ? Это помогло бы другим увидеть, что есть проблема, о которой идет речь. –

+1

Спасибо @ TomášVotruba –

+0

Добро пожаловать. Если вы хотите узнать больше о CodingStandard, проверьте это: https://www.tomasvotruba.cz/blog/2017/05/03/combine-power-of-php-code-sniffer-and-php-cs -fixer-в-3-х линий / –