中文

基于操作的重构感知合并:一项实证评估

软件工程 2022-08-11 v2

摘要

在版本控制系统中处理合并冲突对软件开发人员是一项具有挑战性的任务。解决合并冲突是一个耗时且易出错的过程,使开发人员从重要任务中分心。近期工作表明,重构常涉及合并冲突,且重构相关冲突往往更大,更难解决。文献中有两种声称可自动解决重构相关冲突的重构感知合并技术;然而,这两种技术从未被实证比较。本文中,我们提出 RefMerge,即第一种技术(一种基于操作的重构感知合并算法)的基于 Java 的重新设计与实现。我们在来自 20 个开源项目的 2,001 个含重构相关冲突的合并场景上,将 RefMerge 与 Git 及最先进的基于图的重构感知合并工具 IntelliMerge 进行比较。我们发现 RefMerge 在 497(25%)个合并场景中解决或减少了冲突,而仅在 214(11%)个场景中增加了冲突代码行(LOC)。另一方面,我们发现 IntelliMerge 在 478(24%)个合并场景中解决或减少了冲突,但在 597(30%)个场景中增加了冲突 LOC。我们额外对三种合并算法的差异进行了定性分析,并提供了各工具优势与不足的见解。我们发现,虽然 IntelliMerge 在顺序与格式冲突上表现良好,但其在类级重构和含多个重构的场景中表现不佳。另一方面,RefMerge 对合并场景中重构数量具有弹性,但我们发现 RefMerge 在反转移动相关重构时会引入冲突。

关键词

引用

@article{arxiv.2112.10370,
  title  = {Operation-based Refactoring-aware Merging: An Empirical Evaluation},
  author = {Max Ellis and Sarah Nadi and Danny Dig},
  journal= {arXiv preprint arXiv:2112.10370},
  year   = {2022}
}

备注

23 pages, 17 figures, 7 tables