LastMerge:一种面向多语言的代码集成结构化工具
软件工程
2025-07-29 v1
摘要
非结构化的基于行的合并工具在实际应用中广泛使用。结构化的 AST 基准合并工具显示出显著更好的合并准确性,但很少使用,因为它们是语言特定的且成本高昂,因而不可用于许多编程语言。为提高面向广泛语言的合并准确性,我们提出了 LastMerge,这是一个可通过薄接口配置的通用结构化合并工具,该接口显著减少了支持结构化合并的工作量。为理解通用结构化合并可能对合并准确性和性能产生的影响,我们运行了一个实验,使用四个结构化合并工具:两个 Java 特定工具 jDime 和 Spork,以及它们的通用对应工具 LastMerge 和 Mergiraf。使用每个工具,我们从重要数据集中回放合并情景,收集运行时间、行为差异和合并准确性数据。我们的结果表明,通用结构化合并对合并准确性没有显著影响的证据。尽管我们观察到 Java 特定工具与其通用对应工具之间约有 10% 的差异,但大多数差异源于实现细节,可能被消除。我们发现 LastMerge 比 jDime 报告的误报率低 15%,而 Mergiraf 比 Spork 漏报的误报率低 42%。这两个通用工具的运行时性能与最先进的语言特定实现相当。这些结果表明,通用结构化合并工具可以有效地取代语言特定工具,为行业广泛采用结构化合并铺平了道路。
引用
@article{arxiv.2507.19687,
title = {LastMerge: A language-agnostic structured tool for code integration},
author = {Joao Pedro Duarte and Paulo Borba and Guilherme Cavalcanti},
journal= {arXiv preprint arXiv:2507.19687},
year = {2025}
}