中文

用于程序间变量映射的图神经网络——扩展版

软件工程 2023-08-01 v2 人工智能 机器学习

摘要

自动化程序分析是计算机科学许多领域(尤其是形式化方法与人工智能)中的关键研究领域。由于程序等价问题的不可判定性,比较两个程序极具挑战性。通常,为了比较两个程序,需要建立两个程序变量集之间的关系。因此,映射两个程序间的变量对于程序等价、程序分析、程序修复和克隆检测等一系列任务十分有用。在本工作中,我们提出利用图神经网络(GNNs)基于两个程序的抽象语法树(ASTs)来映射它们之间的变量集。为展示变量映射的效用,我们在程序修复任务上给出了这些映射的三个用例,用于修复入门编程作业(IPAs)中新手程序员常见且反复出现的错误。在一个包含4166对错误/正确程序的数据集上的实验结果表明,我们的方法正确映射了评估数据集的83%。此外,我们的实验显示,当前最先进的程序修复方法高度依赖于程序结构,仅能修复约72%的错误程序。相比之下,我们仅基于变量映射的方法可修复约88.5%。

关键词

引用

@article{arxiv.2307.13014,
  title  = {Graph Neural Networks For Mapping Variables Between Programs -- Extended Version},
  author = {Pedro Orvalho and Jelle Piepenbrock and Mikoláš Janota and Vasco Manquinho},
  journal= {arXiv preprint arXiv:2307.13014},
  year   = {2023}
}

备注

Extended version of "Graph Neural Networks For Mapping Variables Between Programs", paper accepted at ECAI 2023. Github: https://github.com/pmorvalho/ecai23-GNNs-for-mapping-variables-between-programs. 11 pages, 5 figures, 4 tables and 3 listings