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

时间:2008-09-19 11:29:02

标签: continuous-integration hudson

我正在为FindBugs plugin玩精彩的Hudson。理想情况下,如果FindBugs发现任何问题,我希望构建失败。这可能吗?

请不要试着告诉我,“0警告”对FindBugs来说是不现实的。我们一直在使用Ant的FindBugs,我们通常会保持0警告。我们通过使用常规排除过滤器和特定/目标注释来实现这一目标。

4 个答案:

答案 0 :(得分:4)

哈德森的方式是使用不稳定而不是失败的类似的东西。 但是,如果你确实希望你的构建失败,你应该在ant中处理它。

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

答案 1 :(得分:3)

也许您已经看过这个选项,但是当您有超过X个警告时,它至少可以将您的构建设置为不稳定。在作业配置页面上,在指定findbugs文件模式的Findbugs结果输入字段的正下方,应该是一个“高级”按钮。这将扩展并为您提供“不稳定阈值”以及健康报告,根据警告的数量更改Hudson的工作天气指示。

我不希望我的构建失败,但是如果你保持0警告(并且可能是0次测试失败),那么unstable似乎是合理的。

答案 2 :(得分:1)

正如Tom所说,提供的方法是使用FindBugs ant任务的warningsProperty。

但是,我们不喜欢粗略控制让我们过度构建失败。因此,我们编写了一个自定义Ant任务,用于解析FindBugs的XML输出。如果找到任何高优先级警告,它将设置一个Ant属性,如果找到任何正确性警告,则设置不同属性,如果找到任何安全警告,则设置第三个属性,等等。这使得我们无法构建FindBugs警告的目标子集,同时仍然生成涵盖更广泛问题的HTML报告。在将FindBugs分析添加到现有代码库时,这尤其有用。

答案 3 :(得分:0)

你不能非常依赖查找错误,它只是一个专家系统,告诉你在运行时你的程序可能错误。我个人看到findbugs产生了很多警告,因为它无法弄清楚代码的正确性(事实上)。

在一个方法中打开流或jdbc连接并在其他方法中关闭它的一个示例,在这种情况下,findbugs期望在相同的方法中看到close()调用,这有时是不可能的。