我一直在使用jenkins的PHP_CodeSniffer,我的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
--------------------------------------------------------------------------------
我怎么能忽略行长警告?
答案 0 :(得分:44)
您可以创建自己的标准。 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
。
或者,如果您只想在触发此计数之前计算字符数,请重新定义规则:
<!-- 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>
答案 1 :(得分:4)
查找文件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
答案 2 :(得分:4)
忽略消息行超过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>
比创建单独的规则集更快,更省力。
答案 3 :(得分:1)
如果您不想每次都输入带有参数 --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