3

我正在尝试在 Jenkins 中使用 Php Code Sniffer 插件。它会生成一个 checkstyle.xml 文件,但里面没有错误,我知道我应该有。

这是我的 checkstyle.xml 的包含:

<?xml version="1.0" encoding="UTF-8"?>
<checkstyle version="1.5.0RC2">
</checkstyle>

我的 Jenkins 的 build.xml 文件是:

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

当我在命令行中执行此操作时,我得到了不同的结果。我的命令:

phpcs --report=checkstyle --report-file=checkstyle.xml --standard=Zend *.php

它生成没有错误的相同 checkstyle.xml,以及包含错误的 phpcs-checkstyle.tmp。

如何在我的 checkstyle.xml 文件中获得错误结果?

谢谢。

4

2 回答 2

3

我认为你的问题是你正遭受这个错误:http ://pear.php.net/bugs/bug.php?id=19930

该错误仅出现在您使用的 RC 版本中。

恢复到当前的稳定版本 (1.4.5) 应该可以让您重新开始工作。

于 2013-05-21T22:45:16.143 回答
1

我相信您在 Jenkins (ant) 中运行命令时遇到问题的原因是您使用的通配符星号。通配符由 linux shell 扩展,但不是由 ant。

尝试删除通配符。

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

如果您担心 phpcs 会针对非 php 文件运行,您可以传递一个扩展参数:http ://pear.php.net/manual/en/package.php.php-codesniffer.advanced-usage.php

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

虽然,默认情况下 phpcs 无论如何只检查 .inc 和 .php 文件。

于 2013-05-21T16:29:58.360 回答