Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 类与接口上的FindBugs和CheckForNull_Java_Class_Interface_Findbugs - Fatal编程技术网

Java 类与接口上的FindBugs和CheckForNull

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

如果类中的方法实现上存在CheckForNull注释,而接口中的方法声明上不存在CheckForNull注释,有没有办法让FindBugs检查并警告我

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的下一个版本)中的情况相比,这更像是手动编码