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