Как игнорировать длину строки PHP_CodeSniffer

Я использую PHP_CodeSniffer с jenkins, мой build.xml был настроен для phpcs, как показано ниже

<target name="phpcs">
    <exec executable="phpcs">
        <arg line="--report=checkstyle --report-file=${basedir}/build/logs/checkstyle.xml --standard=Zend ${source}"/>
    </exec>
</target> 

И я хотел бы проигнорировать следующее предупреждение

FOUND 0 ERROR(S) AND 1 WARNING(S) AFFECTING 1 LINE(S)
--------------------------------------------------------------------------------
 117 | WARNING | Line exceeds 80 characters; contains 85 characters
--------------------------------------------------------------------------------

Как я могу игнорировать предупреждение о длине строки?

Ответы

Ответ 1

Вы можете создать свой собственный стандарт. Zend один довольно прост (это находится на /usr/share/php/PHP/CodeSniffer/Standards/Zend/ruleset.xml в моей установке Debian после установки его с PEAR). Создайте еще один, основанный на нем, но игнорируйте бит длины строки:

<?xml version="1.0"?>
<ruleset name="Custom">
 <description>Zend, but without linelength check.</description>
 <rule ref="Zend">
  <exclude name="Generic.Files.LineLength"/>
 </rule>
</ruleset>

И установите --standard=/path/to/your/ruleset.xml.

Необязательно, если вы просто хотите увеличить счетчик char до того, как это запустится, переопределите правило:

 <!-- Lines can be N chars long (warnings), errors at M chars -->
 <rule ref="Generic.Files.LineLength">
  <properties>
   <property name="lineLimit" value="N"/>
   <property name="absoluteLineLimit" value="M"/>
  </properties>
 </rule>

Ответ 2

  • Найти файл CodeSniffer/Standards/PEAR/ruleset.xml - на mac/linux вы можете искать в терминале:

    locate PEAR/ruleset.xml или sudo find / -name "ruleset.xml"

  • Затем вам нужно найти следующие строки в файле ruleset.xml:

    <!-- Lines can be 85 chars long, but never show errors --> <rule ref="Generic.Files.LineLength"> <properties> <property name="lineLimit" value="85"/> <property name="absoluteLineLimit" value="0"/> </properties> </rule>

  • Просто измените число 85 (максимальная длина строки) на то, что вы хотите.

Обратите внимание, что стандартным стандартом кодирования phpc является стандарт PEAR. Поэтому вам нужно отредактировать файл ruleset.xml в этом месте: CodeSniffer/Standards/PEAR/ruleset.xml

Ответ 3

Альтернативный способ игнорирования сообщения Строка превышает x символов - использовать флаг --exclude для исключения правила.

vendor/bin/phpcs --standard=PSR2  --exclude=Generic.Files.LineLength app/

Чтобы найти исключаемое имя правила, найдите соответствующий набор правил в следующем каталоге:

vendor/squizlabs/php_codesniffer/src/Standards/<coding standard>/ruleset.xml

Имя правила будет находиться в узле ref :

 <rule ref="Generic.Files.LineLength">
        <properties>
            <property name="lineLimit" value="120"/>
            <property name="absoluteLineLimit" value="0"/>
        </properties>
 </rule>

Это быстрее & менее громоздким, чем создание отдельного набора правил.