gpt4 book ai didi

java - 类与接口(interface)上的 FindBugs 和 CheckForNull

转载 作者:太空宇宙 更新时间:2023-11-04 08:55:20 34 4
gpt4 key购买 nike

如果类中方法的实现上存在 CheckForNull 注释,但接口(interface)中方法的声明上不存在 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());
}
}

我刚刚在我的应用程序中发现了一个错误,原因是缺少 null 检查,FindBugs 没有发现该错误,因为 CheckForNull 只存在于 FooImpl 上,而不存在于 Foo 上,而且我不想手动发现此问题的所有其他位置。

最佳答案

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

问题是 FindBugs 依赖于 bcel 5.2,而该版本尚不支持注释。您仍然可以获得传递给您的代表注释的属性,但与 5.3 中的情况(或 bcel 的下一个版本)相比,需要更多的手动编码。

关于java - 类与接口(interface)上的 FindBugs 和 CheckForNull,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2415804/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com