Java 类与接口上的FindBugs和CheckForNull
如果类中的方法实现上存在CheckForNull注释,而接口中的方法声明上不存在CheckForNull注释,有没有办法让FindBugs检查并警告我Java 类与接口上的FindBugs和CheckForNull,java,class,interface,findbugs,Java,Class,Interface,Findbugs,如果类中的方法实现上存在CheckForNull注释,而接口中的方法声明上不存在CheckForNull注释,有没有办法让FindBugs检查并警告我 import javax.annotation.CheckForNull; interface Foo { public String getBar(); } class FooImpl implements Foo { @CheckForNull @Override public String getBa
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没有发现缺失的null检查,因为CheckForNull只存在于FooImpl上,而不存在于Foo上,我不想手动发现这个问题的所有其他位置。是的,您可以编写自己的检测器,并将它们打包到自己的jar插件文件中。请参见fb-contrib.sf.net作为辅助findbugs插件的示例
一个问题是FindBugs依赖于bcel 5.2,而bcel 5.2还没有注释支持。您仍然可以获得传递给您的表示注释的属性,但与5.3(或bcel的下一个版本)相比,它更像是手动编码。是的,您可以编写自己的检测器,并将它们打包到自己的jar插件文件中。请参见fb-contrib.sf.net作为辅助findbugs插件的示例 一个问题是FindBugs依赖于bcel 5.2,而bcel 5.2还没有注释支持。您仍然可以获得传递给您的表示注释的属性,但与5.3(或bcel的下一个版本)中的情况相比,这更像是手动编码