On the Effectiveness of Machine Learning-based Call Graph Pruning: An Empirical Study
Not on the map. Why?
Abstract (arXiv)
Static call graph (CG) construction often over-approximates call relations, leading to sound, but imprecise results. Recent research has explored machine learning (ML)-based CG pruning as a means to enhance precision by eliminating false edges. However, current methods suffer from a limited evaluation dataset, imbalanced training data, and reduced recall, which affects practical downstream analyses. Prior results were also not compared with advanced static CG construction techniques yet. This study tackles these issues. We introduce the NYXCorpus, a dataset of real-world Java programs with high test coverage and we collect traces from test executions and build a ground truth of dynamic CGs. We leverage these CGs to explore conservative pruning strategies during the training and inference of ML-based CG pruners. We conduct a comparative analysis of static CGs generated using zero control flow analysis (0-CFA) and those produced by a context-sensitive 1-CFA algorithm, evaluating both with and without pruning. We find that CG pruning is a difficult task for real-world Java projects and substantial improvements in the CG precision (+25%) meet reduced recall (-9%). However, our experiments show promising results: even when we favor recall over precision by using an F2 metric in our experiments, we can show that pruned CGs have comparable quality to a context-sensitive 1-CFA analysis while being computationally less demanding. Resulting CGs are much smaller (69%), and substantially faster (3.5x speed-up), with virtually unchanged results in our downstream analysis.
Key facts. Cited by 1 paper in the map (data through 7 Oct 2026). Builds on 15 of its 63 references that are in the map. First posted on arXiv 11 Feb 2024.
Builds on
15 of 63 references.
References · 15
- 2017Attention Is All You Needcited by 59,932
- 2019Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformercited by 14,491
- 2017Accurate, Large Minibatch SGD: Training ImageNet in 1 Hourcited by 1,479
- 2020CodeBERT: A Pre-Trained Model for Programming and Natural Languagescited by 1,286
- 2021CodeT5: Identifier-aware Unified Pre-trained Encoder-Decoder Models for Code Understanding and Generationcited by 890
- 2019CodeSearchNet Challenge: Evaluating the State of Semantic Code Searchcited by 638
- 2023CodeT5+: Open Code Large Language Models for Code Understanding and Generationcited by 327
- 2017A Survey of Machine Learning for Big Code and Naturalnesscited by 220
- 2019A Manually-Curated Dataset of Fixes to Vulnerabilities of Open-Source Softwarecited by 28
- 2021A Survey on Machine Learning Techniques for Source Code Analysiscited by 23
- 2022AutoPruner: Transformer-Based Call Graph Pruningcited by 11
- 2019JGraphT -- A Java library for graph data structures and algorithmscited by 5
3 more
- 2022Algorithms for Large-scale Network Analysis and the NetworKit Toolkitcited by 5
- 2023On the Effect of Transitivity and Granularity on Vulnerability Propagation in the Maven Ecosystemcited by 4
- 2023Context Sensitivity without Contexts: A Cut-Shortcut Approach to Fast and Precise Pointer Analysiscited by 1
Built on by
Citing papers per year: 2025: 1.
1 paper.