如果findBugs的目标是查找错误,如何使我的Ant构建失败



我想在现有项目上启动findBug(在命令行上,目前有522个Bug)。

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

我想让ant构建失败,而不是从输出报告中手动理解它。

谢谢。

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

这可能有点太过分了,但我还是把它作为一个答案来添加。

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

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

您需要编写一个自定义ant任务,该任务派生自ant的Task基类,该基类添加了一个日志侦听器,该侦听器设置了一个属性,然后将其自身删除。自定义任务将获取当前Project,并通过addLogListener(…)添加日志侦听器

日志侦听器需要确定findBugs何时进行日志记录,辨别哪个日志消息列出了Bug的数量,解析该行,设置属性并将其从日志侦听器集中删除。

完成该任务后,还需要编写一个新条件,因为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属性,其中包含bug的数量。然后,如果bug数量太多,可以使用AntContrib的Assert任务抛出构建异常。

是的,这比简单地配置几个标签更需要手动操作,但至少Ant可以实现这一点,因为它能够加载自定义扩展。这不像Ant是在明确了解findBugs插件的情况下编写的(当然必须在之后编写)。

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

这是一个很老的问题,但这可能对其他人有用:有一种非常简单的方法可以实现所需的行为,方法是设置findbugs任务的warningsProperty属性,然后让fail检查属性的值:

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

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

相关内容

  • 没有找到相关文章

最新更新