摘要
nullpointerexception (NPEs)是现代Java程序中崩溃的一个关键来源。以前的工作已经展示了如何通过代码注释和可插入类型检查在编译时防止此类错误。然而,由于巨大的构建时开销和/或高注释负担,这样的系统很难部署到大型软件项目中。本文介绍了一种新的基于类型的Java null安全检查器NullAway,它克服了这些问题。NullAway已经为低开销精心设计,所以它可以作为每个构建的一部分运行。此外,NullAway通过有针对性的不可靠假设减少了注释负担,目标是在检查代码的实践中不会出现错误否定。我们的评估显示NullAway的构建时开销(1.15倍)明显低于同类工具(2.8-5.1倍)。此外,在大量使用NullAway构建的Android应用的生产崩溃数据中,剩余的npe是由于未经检查的第三方库(64%),故意抑制错误(17%),或反射和其他形式的检查后代码修改(17%),而不是NullAway对检查代码的不合理假设。
作者
Banerjee Subarno,拉萨罗克拉普,马努曾经
会议
工程师协会2019
论文全文
“NullAway:实用的基于类型的Java空安全”(PDF)
编程系统团队
评论