有没有办法让 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 中没有。
最佳答案
Intellij idea 可以检测@Nullable 和@NotNull 注解在哪里合适,automatically insert them .这可以用
Analyze -> Infer Nullity
通过这种方式,您可以自动将这些注释添加到当前文件、未提交的文件或各种其他范围。
这种方法的缺点是您必须控制要分析的代码,因此不能将其用于第三方代码。从 Intellij Idea 14 开始,有一个名为 Automatic @NotNull/@Nullable/@Contract inference 的功能.这个特性在 intellij idea 14 中默认是激活的。 idea分析源码,自动检测是否应该有@Nullable或者@NotNull注解。与 infer nullity 的主要区别在于它实际上并没有在代码本身中插入注释,而只是在左侧编辑栏中显示合约信息。如果您正在使用第三方库或不想在代码中使用专有的 jetbrains 注释,这尤其有用。
更新:
请注意,@Nullable 注释不再自动推断,因为它导致太多误报 https://youtrack.jetbrains.com/issue/IDEA-130063#comment=27-812471
此外,根据 a comment Peter Gromov 为 post mentioned above 的作者撰写, 并不是所有的方法都是由这个特征推断出来的
Please also note that contracts are not inferred for methods that can be overridden, i.e. non-static non-private non-final methods don’t have contracts.
关于java - 有没有办法让 Intellij 警告我这段代码可能会导致 NullPointerException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28868992/