Использование Jenkins и Php Code Sniffer

Я пытаюсь использовать плагин Php Code Sniffer в Jenkins. Он генерирует файл checkstyle.xml, но внутри нет ошибок, и я знаю, что должен иметь.

Вот удержание моего checkstyle.xml:

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

Мой файл build.xml для Jenkins:

 <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 без ошибок и phcs-checkstyle.tmp, содержащий ошибки.

Как я могу сделать, чтобы результаты были с ошибками в файле checkstyle.xml?

Благодарю.

Solutions Collecting From Web of "Использование Jenkins и Php Code Sniffer"

Я думаю, ваша проблема в том, что вы страдаете от этой ошибки: http://pear.php.net/bugs/bug.php?id=19930

Ошибка возникает только в версии RC, которую вы используете.

Возвращение к текущей стабильной версии (1.4.5) должно заставить вас снова работать.

Я считаю, что причина, по которой у вас возникли проблемы при запуске команды в Jenkins (ant), связана с тем, что вы используете подстановочную звездочку. Подстановочный знак расширяется оболочкой linux, но не муравьем.

Попробуйте удалить шаблон.

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

Хотя, по умолчанию, phcs только проверяет файлы .inc и .php.