如何查看代码中所有可能的空指针异常 lint?

Ege*_*glu 5 android android-studio

我在代码中同时使用 Kotlin 和 Java,由于 Kotlin 灵活的可空性,method invocation ... may produce java.lang.NullPointerException我的代码中出现了 lints,

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

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

  • Android Lint:可用性

他们都没有列出可能的 NPE lint 吗?有地方列出这些 lint 吗?

Ege*_*glu 5

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

在本节下有Constant conditions & exceptions

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


Mat*_*ier 2

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

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

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

请记住,它只能帮助您找到 NPE,并不能保证您不会得到任何 NPE。

我希望这会对您有所帮助,问候,Matthieu