使用Jenkins和Php Code Sniffer

时间:2013-05-21 15:37:56

标签: php jenkins checkstyle codesniffer

我正在尝试在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文件中的错误获得结果?

感谢。

2 个答案:

答案 0 :(得分:3)

我认为您的问题是您遇到了这个错误:http://pear.php.net/bugs/bug.php?id=19930

该错误仅发生在您正在使用的RC版本中。

恢复到当前的稳定版本(1.4.5)应该可以让你再次工作。

答案 1 :(得分: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文件。