中文

基于机器学习的调用图剪枝有效性:一项实证研究

软件工程 2024-02-13 v1 人工智能 机器学习 编程语言

摘要

静态调用图(CG)构建通常会过度近似调用关系,导致结果可靠但不精确。最近的研究探索了基于机器学习(ML)的 CG 剪枝,作为一种通过消除虚假边来提高精度的方法。然而,当前方法存在评估数据集有限、训练数据不平衡以及召回率降低的问题,这影响了实际的下游分析。先前的结果也尚未与先进的静态 CG 构建技术进行比较。本研究旨在解决这些问题。我们引入了 NYXCorpus,这是一个具有高测试覆盖率的真实世界 Java 程序数据集,我们收集了测试执行的轨迹并构建了动态 CG 的真实数据。我们利用这些 CG 来探索在基于 ML 的 CG 剪枝器的训练和推理过程中的保守剪枝策略。我们对使用零控制流分析(0-CFA)生成的静态 CG 与由上下文敏感的 1-CFA 算法生成的 CG 进行了比较分析,评估了剪枝前后的情况。我们发现,对于真实世界的 Java 项目,CG 剪枝是一项困难的任务,CG 精度的显著提升(+25%)伴随着召回率的下降(-9%)。然而,我们的实验显示了有希望的结果:即使我们在实验中通过使用 F2 度量来优先考虑召回率而非精度,我们也能证明剪枝后的 CG 具有与上下文敏感的 1-CFA 分析相当的质量,同时计算需求更低。生成的 CG 更小(69%),速度显著更快(3.5 倍加速),并且在我们下游分析中的结果几乎不变。

关键词

引用

@article{arxiv.2402.07294,
  title  = {On the Effectiveness of Machine Learning-based Call Graph Pruning: An Empirical Study},
  author = {Amir M. Mir and Mehdi Keshani and Sebastian Proksch},
  journal= {arXiv preprint arXiv:2402.07294},
  year   = {2024}
}

备注

Accepted at the technical track of MSR'24