如何忽略行长PHP_CodeSniffer

我一直在使用PHP_CodeSniffer jenkins,我的构建.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一个非常简单(这是在用PEAR安装后在我的Debian安装中)。基于它创建另一个,但忽略行长位:/usr/share/php/PHP/CodeSniffer/Standards/Zend/ruleset.xml

<?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

忽略消息“行超过 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>

它比创建单独的规则集更快,更不麻烦。


推荐