有没有办法让FindBugs检查并警告我,如果类中方法的实现存在CheckForNull注释,而不是接口中方法的声明?
import javax.annotation.CheckForNull;
interface Foo {
public String getBar();
}
class FooImpl implements Foo {
@CheckForNull
@Override
public String getBar() {
return null;
}
}
public class FindBugsDemo {
public static void main(String[] args) {
Foo foo = new FooImpl();
System.out.println(foo.getBar().length());
}
}
我刚刚在我的应用程序中发现了一个错误,因为FindBugs没有发现缺少空检查,因为CheckForNull只出现在FooImpl上,但不出现在Foo上,我不想发现这个问题的所有其他位置手动
答案 0 :(得分:1)
是的,您可以编写自己的探测器,并将它们打包在您自己的jar插件文件中。请参阅fb-contrib.sf.net作为辅助findbugs插件的示例。
一个问题是FindBugs依赖于尚未支持注释的bcel 5.2。您仍然可以获得传递给您的表示注释的属性,但它比5.3中的情况更加手动编码(或者无论下一个版本的bcel是什么)。