Learning a Static Analyzer from Data
Not on the map. Why?
Abstract (arXiv)
To be practically useful, modern static analyzers must precisely model the effect of both, statements in the programming language as well as frameworks used by the program under analysis. While important, manually addressing these challenges is difficult for at least two reasons: (i) the effects on the overall analysis can be non-trivial, and (ii) as the size and complexity of modern libraries increase, so is the number of cases the analysis must handle. In this paper we present a new, automated approach for creating static analyzers: instead of manually providing the various inference rules of the analyzer, the key idea is to learn these rules from a dataset of programs. Our method consists of two ingredients: (i) a synthesis algorithm capable of learning a candidate analyzer from a given dataset, and (ii) a counter-example guided learning procedure which generates new programs beyond those in the initial dataset, critical for discovering corner cases and ensuring the learned analysis generalizes to unseen programs. We implemented and instantiated our approach to the task of learning JavaScript static analysis rules for a subset of points-to analysis and for allocation sites analysis. These are challenging yet important problems that have received significant research attention. We show that our approach is effective: our system automatically discovered practical and useful inference rules for many cases that are tricky to manually identify and are missed by state-of-the-art, manually tuned analyzers.
Key facts. Cited by 7 papers in the map (data through 7 Oct 2026). First posted on arXiv 6 Nov 2016.
Builds on
No reference list yet.
Built on by
Citing papers per year: 2021: 1; 2022: 4; 2023: 1; 2024: 0; 2025: 1.
7 papers.
- 2022Dataflow Analysis-Inspired Deep Learning for Efficient Vulnerability Detectioncited by 18
- 2023RAPGen: An Approach for Fixing Code Inefficiencies in Zero-Shotcited by 14
- 2022Learning to Reduce False Positives in Analytic Bug Detectorscited by 12
- 2022CodeQueries: A Dataset of Semantic Queries over Codecited by 11
- 2022DeepPERF: A Deep Learning-Based Approach For Improving Software Performancecited by 6
- 2021JavaBERT: Training a transformer-based model for the Java programming languagecited by 5
- 2025Leveraging Reward Models for Guiding Code Review Comment Generationcited by 1
- 2025Leveraging Reward Models for Guiding Code Review Comment Generation4 Jun 2025
- 2023RAPGen: An Approach for Fixing Code Inefficiencies in Zero-Shot29 Jun 2023
- 2022Dataflow Analysis-Inspired Deep Learning for Efficient Vulnerability Detection15 Dec 2022
- 2022CodeQueries: A Dataset of Semantic Queries over Code17 Sep 2022
- 2022DeepPERF: A Deep Learning-Based Approach For Improving Software Performance27 Jun 2022
- 2022Learning to Reduce False Positives in Analytic Bug Detectors8 Mar 2022
- 2021JavaBERT: Training a transformer-based model for the Java programming language20 Oct 2021