一句话:通过分析 Java 项目合并冲突,用机器学习预测冲突解决难度,帮助开发者规划冲突排解。
协作开发中合并冲突不可避免且常打断工作。开发者需要理解冲突并规划解决方案,但并非所有冲突难度相同,现有工具很少支持难度预判。本文分析 128 个 Java 项目中的 6,380 个合并冲突,考察困难冲突的特征,并训练机器学习分类器(如 bagging)来自动分类冲突难度。结果表明,合并冲突难度可以被较准确预测,AUC 达到 0.76。作者还识别了导致冲突困难的因素,以帮助工具构建者优先检测和警告高难度冲突,从而改善开发者的冲突排解规划。
Merge conflicts are inevitable in collaborative software development and are disruptive. When they occur, developers have to stop their current work, understand the conflict and the surrounding code, and plan an appropriate resolution. However, not all conflicts are equally problematic---some can be easily fixed, while others might be complicated enough to need multiple people. Currently, there is not much support to help developers plan their conflict resolution. In this work, we aim to predict the difficulty of a merge conflict so as to help developers plan their conflict resolution. The ability to predict the difficulty of a merge conflict and to identify the underlying factors for its difficulty can help tool builders improve their conflict detection tools to prioritize and warn developers of difficult conflicts. In this work, we investigate the characteristics of difficult merge conflicts, and automatically classify them. We analyzed 6,380 conflicts across 128 java projects and found that merge conflict difficulty can be accurately predicted (AUC of 0.76) through machine learning algorithms, such as bagging.