有没有办法让Intellij警告我这段代码可能会导致NullPointerException?

时间:2015-03-05 02:31:05

标签: java intellij-idea nullpointerexception

有没有办法让Intellij警告我这可能会导致NullPointerException?

URL resource = Main.class.getResource("blah/ha");
System.out.println(resource.getAuthority());  //potential NPE here

Intellij非常善于警告我正在做的蠢事。有没有办法可以在这里警告我潜在的NPE?

请注意 getResources上没有任何null / notnull注释。至少在我正在使用的JDK 1.7中没有。

2 个答案:

答案 0 :(得分:4)

Intellij想法可以检测@Nullable和@NotNull注释的适用位置automatically insert them。这可以通过

完成
  

分析 - >推断无效

这样您就可以自动将这些注释添加到当前文件,未提交的文件或其他各种范围。

这种方法的缺点是您必须控制正在分析的代码,因此您不能将其用于第三方代码。从Intellij Idea 14开始,有一个名为Automatic @NotNull/@Nullable/@Contract inference的功能。默认情况下,此功能在intellij idea 14中处于活动状态。 Idea分析源代码并自动检测是否应该有@Nullable或@NotNull注释。推断无效的关键区别在于它实际上没有将代数插入到代码本身,而只是在左编辑器栏上显示合同信息。如果您正在使用第三方库或者不希望在代码中使用专有的jetbrains注释,这一点尤其有用。

Auto-inferred @NotNull annotations

<强>更新

请注意,不再自动推断@Nullable注释因为导致过多的误报https://youtrack.jetbrains.com/issue/IDEA-130063#comment=27-812471

另外,根据Peter a commentpost mentioned above作者{{3}},并非所有方法都是由此功能推断的

  

请注意,对于可以的方法,不推断合同   被覆盖,即非静态的非私人非最终方法不被覆盖   有合同。

答案 1 :(得分:2)

IntelliJ IDEA检查

一种方法是使用Inspections

如果代码由@Nullable注释注释,您可以使用检查:

Analyze menu

然后选择Run Inspection by Name

@Nullable problems

然后你可以选择范围(项目,测试等)

enter image description here

结果将显示在检查标签中:

enter image description here

Nullable How-To

您可以在Nullable How-To

中找到更多相关信息