2012-03-21 23 views
1

我想在现有项目上启动findBugs(在命令行上有522个bug)。如果findBugs目标找到缺陷,如何使我的Ant构建失败

如何在蚂蚁文件(findbugs目标下)中设置如果发现超过522个错误,则构建失败的选项?

我想实际上失败的蚂蚁生成,而不是从输出报告手动将其讨论。

谢谢。

+0

您使用的是构建服务器吗? – blank 2012-03-21 14:42:35

回答

1

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

+0

谢谢,它真的不是直截了当的 - 我会找到外在的方式。 – user1025852 2012-03-21 14:42:33

+1

Ant可用Java代码扩展。对于刚进入Ant内部的人来说,这可能不是一个简单的任务,但Ant中没有任何不可能完成的任务,除非在Java中也是不可能的。 – 2012-03-21 14:56:04

2

这可能会有点过头,但我将其作为答案添加到其中。

您可以使用sonar。声纳是衡量和追踪代码质量的免费平台。它包含findbugs指标。

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

+0

+1同意。 Sonar很容易整合到构建过程中,并且非常值得添加。 – 2012-03-23 21:23:50

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中可以加载自定义扩展。这并不像蚂蚁写的是明确知道findBugs插件(后来自然必须写)。

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