如何在我的代码中查看所有可能的Null指针异常lints?

时间:2018-05-04 13:15:20

标签: android android-studio

我在代码中同时使用Kotlin和Java,因为Kotlin具有灵活的可空性,我在代码中得到method invocation ... may produce java.lang.NullPointerException lints,

我在项目中运行Code inspection,显示

  • Android Lint:辅助功能
  • Android Lint:正确性
  • Android Lint:国际化
  • Android Lint:Performance

  • Android Lint:可用性

它们都没有列出可能的NPE棉绒?有没有可以列出这些棉绒的地方?

3 个答案:

答案 0 :(得分:2)

facebook上有一个非常好的分析工具 infer,它不仅可以很好地找到NPE,还可以找到资源泄漏,竞争条件等其他错误。

答案 1 :(得分:1)

您可以使用Null Away这是Uber开发团队创建的工具。它将帮助您在代码中找到可能的NPE,代价是代码中的一些配置。

  

NullAway是一个帮助消除Java代码中的NullPointerExceptions(NPE)的工具。要使用NullAway,首先在代码中添加@Nullable注释,只要字段,方法参数或返回值可以为null。给定这些注释,NullAway执行一系列基于类型的本地检查,以确保在代码中取消引用的任何指针都不能为空。 NullAway类似于Kotlin和Swift语言中基于类型的可空性检查,以及用于Java的Checker Framework和Eradicate null检查器。

     

NullAway很快。它构建为Error Prone的插件,可以在代码的每个构建版本上运行。在我们的测量中,运行NullAway的构建时间开销通常小于10%。 NullAway也很实用:它不会阻止代码中所有可能的NPE,但它会捕获我们在生产中观察到的大多数NPE,同时施加合理的注释负担,从而为您带来巨大的“轰动”。在Uber,我们将NullAway与RAVE结合起来,在我们的Android应用程序中获得针对NPE的全面保护。

请注意,它只会帮助您找到NPE,但并不能保证您不会获得任何NPE。

我希望这会对你有所帮助, 问候, 马修

答案 2 :(得分:1)

我刚刚意识到,当您在Android Studio中检查代码时,会出现一个名为 Probable bugs

的部分

在此部分下方有 Constant conditions & exceptions

它显示所有NPE lint,不是专门针对NPE,但在这种情况下可能有所帮助。