【问题标题】:Hudson FindBugs plugin: how make the job fail if any problems?Hudson FindBugs 插件:如果有任何问题,如何使工作失败?
【发布时间】:2008-09-19 11:29:01
【问题描述】:
我正在为Hudson 使用美妙的FindBugs plugin。理想情况下,如果 FindBugs 发现任何问题,我希望构建失败。这可能吗?
请不要告诉我“0 个警告”对于 FindBugs 是不现实的。我们已经使用 Ant 的 FindBugs 有一段时间了,我们通常会保持 0 个警告。我们通过使用一般的排除过滤器和特定/有针对性的注释来实现这一点。
【问题讨论】:
标签:
continuous-integration
hudson
【解决方案1】:
哈德森的方式是使用不稳定的,不会因为这样的事情而失败。
但是,如果您确实希望构建失败,则应该在 ant 中处理。
<findbugs ... warningsProperty="findbugsFailure"/>
<fail if="findbugsFailure">
【解决方案2】:
也许您已经看过这个选项,但是当您收到大于 X 的警告时,它至少可以将您的构建设置为不稳定。在您的作业配置页面上,在您指定 findbugs 文件模式的 Findbugs 结果输入字段的正下方,应该是一个“高级”按钮。这将扩展并为您提供“不稳定阈值”以及根据警告数量更改 Hudson 的工作天气指标的健康报告。
我不希望我的构建失败,但如果您保持 0 个警告(并且可能是 0 个测试失败),则不稳定似乎是合理的。
【解决方案3】:
正如 Tom 所说,提供的方法是使用 FindBugs ant 任务的 warningsProperty。
但是,我们不喜欢粗略的控制让我们避免构建失败。所以我们编写了一个自定义 Ant 任务来解析 FindBugs 的 XML 输出。如果发现任何高优先级警告,它将设置一个 Ant 属性,如果发现任何正确性警告,它将设置一个不同的属性,如果发现任何安全警告,它将设置第三个属性,等等。这让我们无法构建 FindBugs 警告的目标子集,同时仍然生成涵盖更广泛问题的 HTML 报告。这在将 FindBugs 分析添加到现有代码库时特别有用。
【解决方案4】:
您不能如此依赖查找错误,它只是一个专家系统,它会告诉您在运行时您的程序可能有问题。就我个人而言,我看到了很多 findbugs 生成的警告,因为它无法弄清楚代码的正确性(实际上)。
当您在一个方法中打开流或 jdbc 连接并在另一个方法中关闭它时的一个示例,在这种情况下,findbugs 期望在同一方法中看到 close() 调用,这有时是不可能的。