arXivDaily arXiv每日学术速递 周一至周五更新
北美退伍军人节(Veterans Day),12 日无更新
arXiv 2102.11307cs.SE
收藏

软件合并冲突的自动检测和解决:我们到了吗?

Automatic Detection and Resolution of Software Merge Conflicts: Are We There Yet?

Bowen Shen, Cihan Xiao, Na Meng, Fei He

摘要:

开发人员创建软件分支用于临时添加功能和修复错误,并定期合并分支以发布具有新功能或修复补丁的软件。当来自不同分支的程序编辑在文本上重叠时(即,文本冲突),或者这些编辑的共同应用导致编译或运行时错误(即,编译或动态冲突),对于开发人员来说消除合并冲突是具有挑战性的并且是耗时的。先前的研究调查了合并冲突的流行程度,以及冲突与代码气味或软件开发过程的关系;工具被用来发现和解决冲突。然而,一些基本的研究问题仍然没有得到全面的探讨,包括(1)冲突是如何引入的,(2)开发人员如何手动解决冲突,以及(3)现有工具无法处理哪些冲突。在本文中,我们采用了一种混合方法,将自动检测与手动检查相结合,以揭示15个开源存储库中的204个合并冲突及其解决方案。在15个开源项目的版本历史中占%。我们的数据分析揭示了三个现象。首先,编译和动态冲突更难检测,尽管当前的工具主要关注文本冲突。第二,在相同的合并上下文中,开发人员通常使用类似的策略解决类似的文本冲突。第三,开发人员手动修复了大多数检查到的编译和动态冲突,方法是类似于编辑合并版本,就像他们对其中一个分支所做的那样。我们的研究揭示了自动检测和解决合并冲突的挑战和机遇;它还揭示了系统性程序编辑和更改建议等相关领域。

英文摘要:

Developers create software branches for tentative feature addition and bug fixing, and periodically merge branches to release software with new features or repairing patches. When the program edits from different branches textually overlap (i.e., textual conflicts), or the co-application of those edits lead to compilation or runtime errors (i.e., compiling or dynamic conflicts), it is challenging and time-consuming for developers to eliminate merge conflicts. Prior studies examined %the popularity of merge conflicts and how conflicts were related to code smells or software development process; tools were built to find and solve conflicts. However, some fundamental research questions are still not comprehensively explored, including (1) how conflicts were introduced, (2) how developers manually resolved conflicts, and (3) what conflicts cannot be handled by current tools. For this paper, we took a hybrid approach that combines automatic detection with manual inspection to reveal 204 merge conflicts and their resolutions in 15 open-source repositories. %in the version history of 15 open-source projects. Our data analysis reveals three phenomena. First, compiling and dynamic conflicts are harder to detect, although current tools mainly focus on textual conflicts. Second, in the same merging context, developers usually resolved similar textual conflicts with similar strategies. Third, developers manually fixed most of the inspected compiling and dynamic conflicts by similarly editing the merged version as what they did for one of the branches. Our research reveals the challenges and opportunities for automatic detection and resolution of merge conflicts; it also sheds light on related areas like systematic program editing and change recommendation.

机构、总结、中文摘要均由AI分析而来,可能存在错误,请以论文正文为准。

↑