Нуждаюсь в помощи, пытаюсь найти способ заставить плагин Maven antrun взаимодействовать со ВСЕМИ файлами в моем модуле php, выполняя php -l (lint check) для них всех.
Если я использую свойство failonerror со значением true, оно завершится ошибкой, как только попадет в один неверный файл. Если я использую resultproperty с набором файлов (текущая реализация), то он анализирует все файлы, но код возврата берется из первого выполнения php lint, поэтому он завершается ошибкой только в том случае, если первый файл плохой.
<apply executable="php" failonerror="false" resultproperty="myresult">
<arg value="-l" />
<fileset dir="${basedir}">
<include name="**/*.php" />
</fileset>
</apply>
Я пытался использовать другой метод вызова php -l, используя find (из http://kamisama.me/2012/07/02/faster-php-lint/ ), но все равно кажется, что он выходит из-за первого испорченного файла.
<target name="lint" description="Perform syntax check of sourcecode files">
<exec executable="bash" failonerror="true">
<arg value="-c" />
<arg value="find -L ${basedir}/src -name '*.php' -print0 | xargs -0 -n 1 -P 4 php -l" />
</exec>
</target>
Можно использовать справку по синтаксису antrun или метод, который проверит все файлы, но завершит работу, если он завершен или больше файлы не проходят проверку.
Я также рассматривал гитчуков, но не отвечаю за эту систему.
Любые советы приветствуются!
Решил это с помощью плагина AntRun в конце, перешел от ‘resultproperty’ к использованию ‘errorproperty’ с добавлением. Если есть какие-либо ошибки, он продолжит проверку всех файлов, добавляя дальнейшие ошибки, пока все файлы не будут проверены.
После нескольких других проверок он достигает фазы отчета, на которой он выплевывает все найденные ошибки, и если ‘errorproperty’ не был пуст, сборка завершится неудачно. (Это помещает ошибки прямо в конец вывода и избавляет от необходимости прокручивать длинный путь вверх по журналам jenkins / maven, чтобы найти ошибки lint)
Надеюсь, это поможет кому-то!
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.7</version>
<executions>
<execution>
<id>lint-php</id>
<phase>validate</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<target name="lint-php" unless="skipExecution">
<echo>Execution of the php linter</echo>
<echo></echo>
<apply executable="php" failonerror="false" errorproperty="lint-errors" append="true">
<arg value="-l" />
<fileset dir="${basedir}">
<include name="**/*.php" />
</fileset>
</apply>
</target>
<exportAntProperties>true</exportAntProperties>
</configuration>
</execution>
...
<execution>
<id>report-status</id>
<phase>verify</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<target name="exit" unless="skipExecution">
<echo message="PHP lint check warnings:" />
<echoproperties regex="lint-errors" format="xml"/>
<echo message="----------" />
<fail message="PHP linter found linting errors">
<condition>
<not>
<equals arg1="${lint-errors}" arg2="" />
</not>
</condition>
</fail>
</target>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
Других решений пока нет …