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



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

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

  • 安卓林特:辅助功能
  • 安卓林特:正确性
  • 安卓林特:国际化
  • 安卓林特:性能

  • 安卓林特:可用性

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

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

在本节下有Constant conditions & exceptions

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

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

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

NullAway很快。它是作为容易出错的插件构建的,可以在代码的每个构建上运行。在我们的测量中,运行 NullAway 的构建时开销通常小于 10%。NullAway 也很实用:它不会阻止代码中所有可能的 NPE,但它捕获了我们在生产中观察到的大多数 NPE,同时施加了合理的注释负担,从而产生了巨大的"物有所值"。 在优步,我们将 NullAway 与 RAVE 相结合,在我们的 Android 应用中获得针对 NPE 的全面保护。

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

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

Facebook有一个非常好的分析工具,叫做infer,它不仅在查找NPE方面做得很好,而且在发现资源泄漏,竞争条件等其他错误方面做得很好。

最新更新