Spork:保留格式的Java结构化合并
软件工程
2022-02-21 v1
摘要
现代软件开发的高度并行工作流使得源代码合并成为开发者的常见活动。当前实践基于行合并,普遍使用“git merge”。然而,行合并是一种适用于任何文本的通用技术,无法利用源代码的结构化特性,导致合并冲突频繁发生。作为补救措施,研究提出了结构化合并工具,这些工具通常在抽象语法树而非原始文本上操作。结构化合并大大降低了合并冲突的发生率,但存在一些重要局限,主要是倾向于改变合并代码的格式以及运行时间过长。在本文中,我们提出了SPORK,一种新颖的Java结构化合并工具。SPORK的独特之处在于,它比同类最先进的工具在更大程度上保留了格式。SPORK总体上也比现有技术更快,尤其是在实践中显著减少了最坏情况下的运行时间。我们通过重放从119个开源项目中收集的1740个真实文件合并来展示这些特性,并通过深入的案例研究进一步展示了SPORK与现有技术之间的几个关键差异。
引用
@article{arxiv.2202.05329,
title = {Spork: Structured Merge for Java with Formatting Preservation},
author = {Simon Larsén and Jean-Rémy Falleri and Benoit Baudry and Martin Monperrus},
journal= {arXiv preprint arXiv:2202.05329},
year = {2022}
}
备注
21 pages, 18 figures, 11 tables, accepted for publication in IEEE Transactions on Software Engineering