Gradual Program Analysis for Null Pointers
Sam Estep (Carnegie Mellon University), Jenna Wise (Carnegie Mellon, University), Jonathan Aldrich (Carnegie Mellon University), \'Eric Tanter, (University of Chile), Johannes Bader (Jane Street), Joshua Sunshine, (Carnegie Mellon University)

TL;DR
This paper introduces a gradual null-pointer analysis that combines static and dynamic checks to reduce false positives in program analysis, balancing soundness and programmer effort.
Contribution
It adapts gradual typing to abstract interpretation, formalizes a new gradual null-pointer analysis, and demonstrates its effectiveness within the Infer framework.
Findings
Reduces false positives compared to existing null-pointer checkers.
Balances static analysis and dynamic checks for soundness.
Provides a formal foundation for gradual analysis in various domains.
Abstract
Static analysis tools typically address the problem of excessive false positives by requiring programmers to explicitly annotate their code. However, when faced with incomplete annotations, many analysis tools are either too conservative, yielding false positives, or too optimistic, resulting in unsound analysis results. In order to flexibly and soundly deal with partially-annotated programs, we propose to build upon and adapt the gradual typing approach to abstract-interpretation-based program analyses. Specifically, we focus on null-pointer analysis and demonstrate that a gradual null-pointer analysis hits a sweet spot, by gracefully applying static analysis where possible and relying on dynamic checks where necessary for soundness. In addition to formalizing a gradual null-pointer analysis for a core imperative language, we build a prototype using the Infer static analysis framework,…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Code & Models
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
