程序综合能否用于学习合并冲突的解决?一项实证分析
软件工程
2021-03-04 v1
摘要
分叉结构在开源仓库中广泛存在,并导致大量的合并冲突。在本文中,我们从 Microsoft Edge 的视角研究文本合并冲突问题,Microsoft Edge 是主 Chromium 分支的一个大型、高度协作的分叉,存在显著的合并冲突。总体而言,本研究分为两部分。首先,我们对 Microsoft Edge 中的文本合并冲突进行实证评估,并根据文件类型、文件中冲突的位置以及冲突的规模对其进行分类。我们发现约 28% 的合并冲突是 1-2 行改动,且许多解决方式具有频繁的模式。其次,受这些发现的驱动,我们(首次)探索程序综合(Program Synthesis)以学习模式并解决结构性合并冲突。我们提出了一种新颖的领域特定语言(DSL),其捕捉了许多重复的合并冲突解决模式,并从示例解决中学习以该 DSL 中的程序形式的解决策略。我们发现学习到的策略能以 93.2% 的准确率解决 C++ 文件中出现的 11.4% 的冲突(约 41% 的 1-2 行改动)。
引用
@article{arxiv.2103.02004,
title = {Can Program Synthesis be Used to Learn Merge Conflict Resolutions? An Empirical Analysis},
author = {Rangeet Pan and Vu Le and Nachiappan Nagappan and Sumit Gulwani and Shuvendu Lahiri and Mike Kaufman},
journal= {arXiv preprint arXiv:2103.02004},
year = {2021}
}
备注
Accepted at ICSE 2021