论文标题
Spork:Java的结构合并和格式保存
Spork: Structured Merge for Java with Formatting Preservation
论文作者
论文摘要
现代软件开发的高度平行工作流使源代码合并成为开发人员的常见活动。该实践的状态基于基于线的合并,该合并普遍存在与“ GIT合并”一起使用。但是,基于线路的合并是任何无法利用源代码结构化性质的文本的广义技术,使得合并冲突是普遍发生的。作为一种补救措施,研究提出了结构化合并工具,该工具通常在抽象的语法树上而不是原始文本进行操作。结构化合并大大降低了合并冲突的普遍性,但受到重要局限性,主要的局限性是改变合并代码的格式并容易出现过度运行时间的趋势。在本文中,我们提出了Spork,这是一种新颖的Java结构合并工具。 Spork是独一无二的,因为它保留了比可比的最新工具更高的格式。 Spork总体上也比艺术的状态快,尤其是在实践中大大减少了最差的运行时间。我们通过重现从119个开源项目中收集的1740个现实世界文件合并来证明这些属性,并进一步证明了Spork和The Art Cone of The Art Sate a Undepth案例研究之间的几个关键差异。
The highly parallel workflows of modern software development have made merging of source code a common activity for developers. The state of the practice is based on line-based merge, which is ubiquitously used with "git merge". Line-based merge is however a generalized technique for any text that cannot leverage the structured nature of source code, making merge conflicts a common occurrence. As a remedy, research has proposed structured merge tools, which typically operate on abstract syntax trees instead of raw text. Structured merging greatly reduces the prevalence of merge conflicts but suffers from important limitations, the main ones being a tendency to alter the formatting of the merged code and being prone to excessive running times. In this paper, we present SPORK, a novel structured merge tool for JAVA. SPORK is unique as it preserves formatting to a significantly greater degree than comparable state-of-the-art tools. SPORK is also overall faster than the state of the art, in particular significantly reducing worst-case running times in practice. We demonstrate these properties by replaying 1740 real-world file merges collected from 119 open-source projects, and further demonstrate several key differences between SPORK and the state of the art with in-depth case studies.