现代代码评审中已合并与已废弃代码变更的早期预测
软件工程
2021-10-27 v2 机器学习
摘要
现代代码评审流程是当前软件开发实践不可或缺的一部分。此处投入了大量精力来检查代码变更、发现缺陷、提出改进建议并处理评审者的建议。在代码评审流程中,通常会发生若干次迭代,作者提交代码变更,评审者给出反馈,直到满意接受变更为止。在约 12% 的情况下,变更最终被废弃,浪费了所有努力。在本研究中,我们的目标是设计一种工具,能够在早期阶段预测代码变更将被合并还是被废弃,以减少所有相关利益相关者(例如程序作者、评审者、项目管理等)的努力浪费。Fan 等人 [1] 的研究正式确认了对此类工具的实际需求。我们从三个大型流行开源软件的代码评审中挖掘了 146,612 个代码变更,训练并测试了一套有监督机器学习分类器,包括浅层和基于深度学习的分类器。在模型的训练和测试中,我们考虑每个代码变更共 25 个特征。性能最佳的模型名为 PredCR(Predicting Code Review),一种基于 LightGBM 的分类器,平均达到约 85% 的 AUC 分数,相对最先进技术 [1] 提升 14-23%。在我们针对三个软件项目 146,612 个代码变更的经验研究中,我们发现:(1)PredCR 中引入的评审者维度等新特征最具信息量。(2)与基线相比,PredCR 在减少对新开发者的偏见方面更有效。(3)PredCR 使用代码评审仓库中的历史数据,因此随着软件系统在新数据下的演进,PredCR 的性能会提升。
引用
@article{arxiv.1912.03437,
title = {Early Prediction for Merged vs Abandoned Code Changes in Modern Code Reviews},
author = {Md. Khairul Islam and Toufique Ahmed and Rifat Shahriyar and Anindya Iqbal and Gias Uddin},
journal= {arXiv preprint arXiv:1912.03437},
year = {2021}
}