论文

通过结合 Transformer 和程序依赖图来增强影响分析的代码理解

Enhancing Code Understanding for Impact Analysis by Combining Transformers and Program Dependence Graphs

摘要

影响分析 (IA) 是一项关键的软件维护任务,它确定给定的一组代码更改对较大软件项目的影响,旨在避免潜在的不利影响。 IA 是一项具有认知挑战性的任务,涉及推理各种代码结构之间的抽象关系。鉴于其困难,研究人员致力于通过主要使用耦合度量来衡量软件项目不同部分的“连通性”的方法来实现 IA 自动化。许多耦合指标依赖于静态、动态或演化信息,并且基于启发式方法,而这些启发式方法往往很脆弱,需要昂贵的执行分析或大量共同更改历史才能准确估计影响集。在本文中,我们介绍了一种新颖的 IA 方法,称为 Athena,它将软件系统的依赖图信息与概念耦合方法相结合,该方法利用代码深度表示学习的进步,而不需要更改历史记录和执行信息。以前的 IA 基准测试规模较小,包含的软件项目不到 10 个,并且提交混乱,因此很难衡量准确的结果。因此,我们根据 25 个开源软件项目构建了一个名为 Alexandria 的大规模 IA 基准测试,该基准测试利用了错误修复中的细粒度提交信息。在这个新的基准测试中,我们性能最佳的方法配置的 mRR、mAP 和 HIT@10 分数分别为 60.32%、35.19% 和 81.48%。通过各种消融和定性分析,我们表明 Athena 新颖地结合了程序依赖图和概念耦合信息,使其性能比更简单的基线高出 10.34%、9.55% 和 11.68%,具有统计显着性。