Как завершить сборку Ant, если цель findBugs находит ошибки - PullRequest
1 голос
/ 21 марта 2012

Я хочу запустить findBugs в существующем проекте (в командной строке в настоящее время есть 522 ошибки).

Как я могу установить в файле ant (под целью findbugs) опцию, чтобы сбить сборку при наличиинайдено более 522 ошибок?

Я хочу на самом деле завершить сборку муравья и не понимать его вручную из выходного отчета.

Спасибо.

Ответы [ 4 ]

2 голосов
/ 21 марта 2012

Это может зайти слишком далеко, но я добавляю это как ответ тем не менее.

Вы можете использовать сонар для этого.Sonar - это бесплатная платформа для измерения и отслеживания качества кода.В него включены показатели поиска ошибок.

Имеется плагин Build Breaker , который будет нарушать вашу сборку при определенных условиях.

1 голос
/ 21 марта 2012

Вам нужно написать пользовательскую задачу 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.

1 голос
/ 21 марта 2012

Это может быть невозможно.Вы можете использовать задачу интеллектуального анализа данных и выполнить специальную обработку.http://findbugs.sourceforge.net/manual/datamining.html

0 голосов
/ 07 мая 2018

Довольно старый вопрос, но, может быть, это будет полезно для кого-то еще: - это довольно простой способ достижения желаемого поведения путем установки атрибута warningsProperty задачи findbugs и последующего разрешения fail проверить стоимость объекта:

<findbugs ... warningsProperty="findbugs.warnings">
  ...
</findbugs>
<fail>
  <condition><istrue value="${findbugs.warnings}"/></condition>
</fail>

(Само собой разумеется, что findbugs сейчас заброшены, но есть spotbugs в качестве преемника.)

...