我可以创建Findbugs或任何其他代码分析器,检查可以返回null
的方法是否注释为@Nullable
吗?
我想检查的情况如下:
// Third party library
class Foo
{
// Static test should fail because it's not annotated as @Nullable
String get()
{
return null;
}
}
答案 0 :(得分:1)
是的,你可以。 IntelliJ Idea具有静态代码分析工具。您可以找到说明here。
答案 1 :(得分:1)
我相信当前的工具不能开箱即用,包括IntelliJ。您必须编写自定义FindBugs检查。 FindBugs有一些支持空值分析的逻辑。
原因是您正在尝试对方法的合同进行反向工程。 Nullness注释是合同的一部分,因此它们不能也不应该从代码中推断出来。甚至在理论上也没有办法告诉程序员想要方法返回null
值还是编程错误。根据这一点,您必须通过添加@Nullable
注释或更改方法主体来修复代码,以使其无法返回null
(并可能添加@Nonnull
)。< / p>
FindBugs具有一些annotations,可用于在包级别指定nullness默认值。然后它将检查该包中的所有类方法是否符合您的默认值。如果你没有这样做,FindBugs假定你设置@Nullable
;所以也许你的情况已经解决了。