一种用于评估抽象语法树映射算法的差分测试方法
软件工程
2021-03-02 v1
摘要
抽象语法树(AST)映射算法被广泛用于分析源代码中的变更。尽管 AST 映射算法具有基础性作用,但鲜有工作评估 AST 映射算法的准确性,即算法捕获代码演进的程度。我们观察到程序元素通常只有一个最佳映射的程序元素。基于该观察,我们提出一种分层方法,通过不同算法自动比较所映射语句与词元的相似性。通过执行比较,我们确定每个被比较的算法是否为某语句或其词元生成了不准确的映射。我们邀请 12 位外部专家来确定三种常用 AST 映射算法对 200 条语句及其词元是否生成准确映射。基于专家反馈,我们观察到我们的方法达到了 0.98–1.00 的精确率和 0.65–0.75 的召回率。此外,我们使用包含总计 263,165 个文件修订版本的十个 Java 项目数据集进行大规模研究。我们的方法确定 GumTree、MTDiff 和 IJM 分别对 20%–29%、25%–36% 和 21%–30% 的文件修订版本生成了不准确映射。我们的实验结果表明,最先进的 AST 映射算法仍需要改进。
引用
@article{arxiv.2103.00141,
title = {A Differential Testing Approach for Evaluating Abstract Syntax Tree Mapping Algorithms},
author = {Yuanrui Fan and Xin Xia and David Lo and Ahmed E. Hassan and Yuan Wang and Shanping Li},
journal= {arXiv preprint arXiv:2103.00141},
year = {2021}
}