如果findBugs目标发现错误,如何使我的Ant构建失败

时间:2012-03-21 09:52:37

标签: java ant findbugs

我想在现有项目上启动findBugs(在命令行上目前有522个错误)。

如果发现超过522个错误,我如何在ant文件中设置(在findbugs目标下)选项以使构建失败?

我想实际上使ant构建失败,而不是从输出报告中手动删除它。

感谢。

4 个答案:

答案 0 :(得分:2)

这可能有点太过分了,但我正在添加它作为答案。

您可以使用sonar。 Sonar是一个测量和跟踪代码质量的免费平台。它包含了findbugs指标。

它有Build Breaker Plugin,会在某些条件下破坏你的构建。

答案 1 :(得分:1)

这可能是不可能的。您可以使用数据挖掘任务并进行一些特殊处理。 http://findbugs.sourceforge.net/manual/datamining.html

答案 2 :(得分:1)

You need to write a custom ant task,派生自Ant的Task基类,它添加了一个日志侦听器,用于设置属性并在之后自行删除。自定义任务将获取当前Project and add the log listener via addLogListener(...)

日志侦听器需要识别findBugs何时记录,识别哪条日志消息是列出错误数量的日志消息,解析该行,设置属性并将其自身从日志侦听器集中删除。

完成该任务后,you need to also write a new condition,因为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插件的明确知识编写的(后来自然必须写)。

另一种方法是找到findBugs ANT插件的源代码,并假设它具有允许合法修改的许可证,修改ANT插件以获得新的“附加”属性setCount="propName",然后捕获并在现有的findBugs ANT插件中设置属性。

答案 3 :(得分:0)

相当古老的问题,但也许这对其他人有用:通过设置warningsProperty的{​​{1}}属性来实现所需行为的一种相当简单的方法}任务和之后让findbugs检查属性的值:

fail

(不用说现在已经放弃了findbugs,但有spotbugs作为继任者。)