当使用FindBugs检测Java代码中的潜在代码问题时,我们遇到了以下问题。使用下面的模板的方法(创建最小样本来重现问题):
package com.clcbio.test;
public class Foo {
private static final boolean SETTING = false;
private String something = "blah";
public static void main(String[] args) throws Exception {
Foo f = new Foo();
f.foo();
}
public void foo() {
if (!SETTING) {
return;
}
something = "else";
System.out.println("Hello");
}
}
在Eclipse中,它报告了标签的错误:“方法com.clcbio.test.Foo.foo()描述的”UC_USELESS_VOID_METHOD“似乎没用”,这是完全正确的(无论是作业还是打印被删除它不会报告问题)。很好,我们抓到了一个bug bug但是
从命令行运行FindBugs时,我们无法让它报告相同代码的错误。我们已经尝试设置参数-maxRank 20
,-effort:max
(并且还尝试了defailt和min以防万一),-userPrefs
(参考eclipse配置),-low
和{{ 1}}加上这些的各种组合。此外,我们还尝试明确告诉FindBugs启用与eclipse声明相同的插件来检测它(edu.umd.cs.findbugs.plugins.core)。
由于我们的ant脚本正在运行FindBugs,我们真的希望它们在出现错误的情况下使构建失败,我们也希望它能够失败。但是在不知道如何让命令行来检测它的情况下,很难找到正确的设置。
我们如何使ant或命令行工具也显示此错误?