中文

面向Python的可扩展且精确的应用中心调用图构建

软件工程 2024-09-11 v5

摘要

调用图构建是过程间静态分析的基础。PYCG是为Python程序构建调用图的最先进方法。遗憾的是,当应用于整体程序分析(即同时分析应用程序及其依赖库)时,PyCG无法扩展到大型程序。此外,PyCG是流不敏感的且未完全支持Python的特性,阻碍了其准确性。为克服这些缺陷,我们提出了一种可扩展且精确的Python程序应用中心调用图构建方法,并将其实现为原型工具JARVIS。JARVIS为程序中的每个函数维护一个类型图(即程序标识符的类型关系)以允许类型推断。以一个函数作为输入,JARVIS即时生成调用图,其中流敏感的过程内分析和过程间分析依次进行并执行强更新。我们在135个小型Python程序的微基准和6个真实世界Python应用的宏基准上的评估表明,JARVIS能够显著改进PYCG:时间至少快67%,精度高84%,召回率至少高20%。

关键词

引用

@article{arxiv.2305.05949,
  title  = {Scalable and Precise Application-Centered Call Graph Construction for Python},
  author = {Kaifeng Huang and Yixuan Yan and Bihuan Chen and Zixin Tao and Xin Peng},
  journal= {arXiv preprint arXiv:2305.05949},
  year   = {2024}
}

备注

13 pages