中文

AutoPruner:基于 Transformer 的调用图剪枝

软件工程 2022-09-08 v1 人工智能

摘要

构建静态调用图需要在完备性与精度之间权衡。用于构建调用图的程序分析技术通常不够精确。为解决该问题,研究人员近期提出了由机器学习赋能的调用图剪枝方法,以对静态分析构建的调用图进行后处理。构建机器学习模型通过提取结构特征来从调用图中捕获信息,用于随机森林分类器。随后它移除被预测为假阳性的边。尽管机器学习模型展现出改进,它们仍受局限,因为它们未考虑源代码语义,因此常无法有效区分真阳性和假阳性。在本文中,我们提出一种新颖的调用图剪枝技术 AutoPruner,通过统计语义与结构分析消除调用图中的假阳性。给定由传统静态分析工具构建的调用图,AutoPruner 采取基于 Transformer 的方法捕获调用图中每条边相关的调用者与被调用者函数之间的语义关系。为此,AutoPruner 微调一个在大型语料上预训练的代模型,以基于其语义描述表示源代码。接下来,该模型用于从调用图中每条边相关的函数提取语义特征。AutoPruner 将这些语义特征与从调用图提取的结构特征结合,通过前馈神经网络对每条边分类。我们在真实程序基准数据集上的实证评估表明,AutoPruner 优于最先进的基线,在识别静态调用图中的假阳性边上 F-measure 最高提升13%。

关键词

引用

@article{arxiv.2209.03230,
  title  = {AutoPruner: Transformer-Based Call Graph Pruning},
  author = {Thanh Le-Cong and Hong Jin Kang and Truong Giang Nguyen and Stefanus Agus Haryono and David Lo and Xuan-Bach D. Le and Huynh Quyet Thang},
  journal= {arXiv preprint arXiv:2209.03230},
  year   = {2022}
}

备注

Accepted to ESEC/FSE 2022, Research Track