Gradual Program Analysis for Null Pointers

05/13/2021
by   Sam Estep, et al.
0

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, and present preliminary evidence that the gradual null-pointer analysis reduces false positives compared to two existing null-pointer checkers for Infer. Further, we discuss ways in which the gradualization approach used to derive the gradual analysis from its static counterpart can be extended to support more domains. This work thus provides a basis for future analysis tools that can smoothly navigate the tradeoff between human effort and run-time overhead to reduce the number of reported false positives.

READ FULL TEXT

page 3

page 5

page 13

page 17

page 19

page 21

page 23

page 25

research
03/08/2022

Learning to Reduce False Positives in Analytic Bug Detectors

Due to increasingly complex software design and rapid iterative developm...
research
11/12/2019

MCPA: Program Analysis as Machine Learning

Static program analysis today takes an analytical approach which is quit...
research
06/27/2022

Nowhere to Hide: Detecting Obfuscated Fingerprinting Scripts

As the web moves away from stateful tracking, browser fingerprinting is ...
research
02/10/2023

C-rusted: The Advantages of Rust, in C, without the Disadvantages

C-rusted is an innovative technology whereby C programs can be (partly) ...
research
07/25/2018

Robustness to fundamental uncertainty in AGI alignment

The AGI alignment problem has a bimodal distribution of outcomes with mo...
research
10/20/2017

Solving the "false positives" problem in fraud prediction

In this paper, we present an automated feature engineering based approac...
research
06/15/2022

Designing a Provenance Analysis for SGX Enclaves

Intel SGX enables memory isolation and static integrity verification of ...

Please sign up or login with your details

Forgot password? Click here to reset