Вам нужно написать пользовательскую задачу ant , производную от базового класса Ant Task
, который добавляет прослушиватель журнала, который устанавливает свойство и впоследствии удаляет себя.Настраиваемая задача извлекает текущий Project
и добавляет прослушиватель журнала с помощью addLogListener (...) .
Прослушиватель журнала должен определить, когда findBugs ведет журнал, определить, какое сообщение журналаэто тот, который перечисляет количество ошибок, анализирует эту строку, устанавливает свойство и удаляет себя из набора прослушивателей журнала.
После выполнения этой задачи вам также необходимо написать новое условие, поскольку Ant не поставляется с условием сравнения чисел.Затем вы можете использовать свое пользовательское условие в задаче сбоя, как и любое другое условие.
<findBugCountListener prefix="findbugs.count"/>
<findBugs ...>
</findBugs>
<fail>
<condition property="allupper">
<and>
<isset property="findbugs.count"/>
<greaterThan value="${findbugs.count}" limit="522"/>
</and>
</condition>
</fail>
В идеале ваш слушатель должен установить свойство Ant с количеством ошибок.Затем вы можете использовать задачу AntContrib Assert, чтобы вызвать исключение при сборке, если число ошибок слишком велико.
Да, это больше ручная работа, чем простая настройка нескольких тегов, но, по крайней мере, это возможно с помощью Ant из-зак его способности загружать пользовательские расширения.Не то чтобы Ant был написан с явным знанием плагина findBugs (который, естественно, должен был быть написан позже).
Другая альтернатива - найти исходный код плагина ANT findBugs и предположить, что он имеетлицензию, которая разрешает легальное изменение, измените плагин ANT, чтобы иметь новое «дополнительное» свойство, setCount="propName"
, а затем перехватите и установите свойство в существующем плагине findBugs ANT.