微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java – 有没有办法让Intellij警告我这段代码可能会导致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中不是我正在使用的.

解决方法

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

Analyze -> Infer Nullity

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

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

更新:

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

此外,根据post mentioned above的作者Peter Gromov的a comment,并非所有方法都是由此功能推断出来的

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.

原文地址:https://www.jb51.cc/java/129621.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐