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