【问题标题】:FindBugs and CheckForNull on classes vs. interfaces类与接口上的 FindBugs 和 CheckForNull
【发布时间】:2010-03-10 09:39:22
【问题描述】:

如果在类中方法的实现中存在 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 没有发现缺少空检查,因为 CheckForNull 仅存在于 FooImpl 上,但不存在于 Foo 上,我不想发现此问题的所有其他位置手动。

【问题讨论】:

    标签: java class interface findbugs


    【解决方案1】:

    是的,您可以编写自己的检测器,并将它们打包到您自己的 jar 插件文件中。请参阅 fb-contrib.sf.net 作为辅助 findbugs 插件的示例。

    一个问题是 FindBugs 依赖于尚不支持注释的 bcel 5.2。您仍然会获得传递给您的表示注释的属性,但它比 5.3(或任何 bcel 的下一个版本)中的情况更多的是手动编码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-08-31
      • 2011-01-17
      • 2016-03-24
      • 2017-02-19
      • 2012-02-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多