Hudson FindBugs插件:如果出现任何问题,如何使工作失败?

时间:2020-03-06 14:25:34  来源:igfitidea点击:

我正在为Hudson使用出色的FindBugs插件。理想情况下,如果FindBugs发现任何问题,我希望构建失败。这可能吗?

请不要试图告诉我" 0警告"对于FindBugs是不现实的。我们使用Ant的FindBugs已有一段时间了,我们通常会维护0条警告。我们通过使用常规排除过滤器和特定/目标注释来实现此目的。

解决方案

我们不能太依赖查找错误,它只是一个专家系统,告诉我们在运行时程序可能有问题。就个人而言,我发现findbugs会产生很多警告,因为它无法找出代码的正确性(实际上)。

一个示例,当我们在一个方法中打开一个流或者jdbc连接,而在另一个方法中关闭它时,在这种情况下,期望在同一方法中看到close()调用的findbugs有时无法执行。

也许我们已经看过此选项,但是当我们收到大于X的警告时,它至少可以将构建设置为不稳定。在作业配置页面上,在我们指定findbugs文件模式的Findbugs结果输入字段的正下方,应该是一个"高级"按钮。这将扩展并为我们提供"不稳定阈值"以及"运行状况报告",该报告会根据警告次数更改哈德森的工作天气指示器。

我不希望我的构建失败,但是如果我们要维护0条警告(可能是0条测试失败),那么不稳定似乎是合理的。

哈德森方法是使用不稳定对象,并且不会因为这种情况而失败。
但是,如果我们确实希望构建失败,则应在ant中进行处理。

<findbugs ... warningsProperty =" findbugsFailure" />
<fail if =" findbugsFailure">`

正如Tom所指出的,提供此功能的方法是使用FindBugs ant任务的warningsProperty。

但是,我们不喜欢给我们带来构建失败的粗糙控制。因此,我们编写了一个自定义的Ant任务,用于解析FindBugs的XML输出。如果找到任何高优先级警告,它将设置一个Ant属性;如果找到任何正确性警告,则将设置另一个属性;如果找到任何安全警告,则将设置另一个属性,等等。这使我们无法针对FindBugs警告的目标子集进行构建,同时仍生成涵盖更广泛问题的HTML报告。当将FindBugs分析添加到现有代码库时,这特别有用。