Scalable and Precise Application-Centered Call Graph Construction for Python
Kaifeng Huang, Yixuan Yan, Bihuan Chen, Zixin Tao, Xin Peng

TL;DR
This paper introduces JARVIS, a scalable and precise tool for constructing application-centered call graphs in Python, addressing limitations of previous methods by improving speed and accuracy through flow-sensitive analysis and type inference.
Contribution
JARVIS is a novel tool that enhances call graph construction for Python by combining flow-sensitive analysis with type inference, enabling scalable and accurate whole-program analysis.
Findings
JARVIS is at least 67% faster than PYCG.
JARVIS achieves 84% higher precision.
JARVIS improves recall by at least 20%.
Abstract
Call graph construction is the foundation of inter-procedural static analysis. PYCG is the state-of-the-art approach for constructing call graphs for Python programs. Unfortunately, PyCG does not scale to large programs when adapted to whole-program analysis where application and dependent libraries are both analyzed. Moreover, PyCG is flow-insensitive and does not fully support Python's features, hindering its accuracy. To overcome these drawbacks, we propose a scalable and precise approach for constructing application-centered call graphs for Python programs, and implement it as a prototype tool JARVIS. JARVIS maintains a type graph (i.e., type relations of program identifiers) for each function in a program to allow type inference. Taking one function as an input, JARVIS generates the call graph on-the-fly, where flow-sensitive intra-procedural analysis and inter-procedural analysis…
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.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsSoftware Engineering Research · Parallel Computing and Optimization Techniques · Software Testing and Debugging Techniques
