У меня есть цель, настроенная в ant, которая запускает проверку PHP lint для всех измененных файлов с момента последней проверки.
<target
name="lint"
unless="lint.done">
<apply executable="php" taskname="lint" failonerror="true">
<arg value="-l">
<fileset dir="...">
<include name="**/*.php">
<modified/>
</fileset>
</apply>
</target>
К сожалению, если это не удастся из-за того, что один файл не прошел проверку lint, все остальные файлы не будут проверены на lint, но все равно будут сохранены в измененном кэше. Файл, вызвавший сбой, также будет кэширован modified
Это означает, что при следующем запуске проверка будет проходить, даже если не было внесено никаких изменений для выяснения причины сбоя проверки lint.
В конце концов, если возникнет ошибка lint, сборка не удастся. Тяжелая часть - попытаться заставить его потерпеть неудачу и не остановиться до тех пор, пока он не закончит линтинг.
Решения будут заключаться в следующем:
- Если проверка не удалась, не обновляйте измененный кеш.
- Если проверка не удалась для одного файла, продолжайте помечать другие файлы, но помечайте сборку как сбойную.
Возможно ли одно из этих решений?
Для этого первого пункта, я знаю, что вы можете передать аргумент modified
который останавливает обновление кэша. Не могли бы вы затем вызвать второй modified
после проверки lint, чтобы кэшировать файлы, только если проверка прошла успешно?
Во-вторых, основной способ, который я могу придумать, - не сбои при ошибке lint, а передача результатов lint в скрипт, который будет проверять и выводить все сбойные файлы одновременно, если это необходимо.