Как игнорировать длину строки 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
--------------------------------------------------------------------------------

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


person dextervip    schedule 14.02.2012    source источник
comment
Привет, декстервип. Используете ли вы плагин Jenkins для публикации результатов phpcs? Я хотел бы знать о том, как это настроено в Дженкинсе. Привет, нс   -  person nonshatter    schedule 30.08.2012
comment
@nonshatter Я использовал puglin Violations для публикации своих результатов. Он работает очень хорошо, просто установите его и включите в свой проект, ссылаясь на ваш xml-файл.   -  person dextervip    schedule 30.08.2012
comment
Спасибо @dextervip, я проверю это. Я только вчера получил установку, работающую с использованием плагина «checkstyle». Это дает хорошие отчеты с некоторыми графиками тенденций и т. д. Дополнительная информация для тех, кто заинтересован здесь: stackoverflow.com/a/12197103/1016364   -  person nonshatter    schedule 31.08.2012


Ответы (4)


Вы можете создать свой собственный стандарт. 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.

При желании, если вы просто хотите увеличить количество символов до того, как это сработает, переопределите правило:

 <!-- 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>
person Wrikken    schedule 14.02.2012
comment
Спасибо, это то, что я искал! - person dextervip; 15.02.2012
comment
Привет, Вриккен, ты не знаешь, где я могу найти файл для редактирования правила? Спасибо - person test; 19.12.2014
comment
@DanJ.: как уже говорилось, не редактируйте существующее правило, расширяйте набор правил, который вам нравится, и переписывайте несколько правил. Если вы действительно хотите добраться до файла: это зависит от того, обычно они зависают в /usr/share/php/ где-то, как в ответе. - person Wrikken; 24.12.2014
comment
Или вы можете: <rule ref="Generic.Files.LineLength"> <exclude-pattern>src/Migrations</exclude-pattern> </rule> Пример: Аннотированный набор правил PHP_CodeSniffer - person Maxim Mandrik; 29.03.2019

Альтернативный способ игнорировать сообщение Строка превышает 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>

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

person Hyder B.    schedule 23.08.2019

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

    locate PEAR/ruleset.xml or sudo find / -name "ruleset.xml"

  2. Затем вам нужно найти в файле 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>

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

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

person cofirazak    schedule 03.08.2015

Если вы не хотите вводить каждый раз всю команду с параметрами --standard=PSR2 --exclude=Generic.Files.LineLength app/, вы можете создать файл phpcs.xml в своем основном каталоге с переопределенной настройкой правила.

<?xml version="1.0"?>
<ruleset name="PHP_CodeSniffer">
    <rule ref="PSR2"> <!-- ruleset standard -->
        <properties>
            <property name="lineLimit" value="150"/> <!-- maximum line length -->
        </properties>
    </rule>
    <file>app</file> <!-- directory you want to analyze -->
    <arg name="encoding" value="utf-8"/>
</ruleset>

Затем вам нужно ввести только следующую команду:

vendor/bin/phpcs
person Jsowa    schedule 04.01.2021