Uber开源其Android应用空指针异常检测工具
极客时间编辑部
讲述:丁婵大小:1.18M时长:02:35
近日,Uber 发布了用于检测安卓应用程序中的 NullPointerExceptions,也就是 NPE 的开源工具 NullAway。
对 Uber 而言,保持移动应用程序的可靠性对于用户体验至关重要。在 Java 中取消引用空指针时发生的 NPE 是安卓应用程序崩溃的常见原因。此前,Uber 一直使用第三方静态代码分析工具来尽可能地防止 NPE 崩溃,如 Facebook Infer 和 Eradicate 等工具。
然而,随着 Uber 的代码库的增长,这些工具已经不能满足为工程师提供强大的检测和快速反馈的需求。为了解决这个问题,Uber 开发了 NullAway,这是一个用于帮助消除 NPE 的快速实用的工具。
在 NullAway 之前,Uber 开发者只会注意到在提交队列阶段报告的 NPE 错误,使用这个工具之后,他们可以在本地构建代码阶段,就能早早地识别错误。
NullAway 的核心是基于开源类型的 NPE 检查器,用于 Java 代码。同时,它也是一个用于查找框架 Error Prone bug 的检查插件。Error Prone 的运行代码检查是 Java 编译过程标准的一部分,此编译器的集成允许检查编译器已经完成的工作,如代码解析和类型检查。
此外,NullAway 和 Error Prone 可以直接集成到 Buck 所支持的快速内存并行构建中,Buck 是 Uber 用于安卓代码的构建工具。因此,NullAway 可以比在正常构建过程之外运行的工具快得多。
NullAway 在正常构建时间中只用了很少的开销,大约只占到 10%。因此,Uber 不仅仅是在提交队列中配置了 NullAway,而是把它运行在了安卓代码的每一个版本上。
将 NullAway 整合到 Uber 所有的 Java 构建中的价值主要表现在以下三个方面:
立即反馈:集成到所有版本中,使开发人员能够在引入潜在的 NPE 时立即获得反馈,而不必等待提交队列。
没有 NPE 检查器:构建集成意味着 Uber 不再需要在提交队列上作为单独的作业运行无效检查器,从而节省了大量的机器资源。
降低提交队列延迟:NullAway 能够显着降低提交队列延迟,由于 NPE 警告而导致提交队列失败变得非常罕见;这个减少的延迟在 Uber 转向 monorepo 之后变得更加显着。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
该免费文章来自《极客视点》,如需阅读全部文章,
请先领取课程
请先领取课程
免费领取
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(2)
- 最新
- 精选
- crane0116这个不错哦
- xianjingood
收起评论