E-Predictor:Pull Request接受的早期预测方法
早期预测Pull Request接受的研究突破
近年来,开源软件(Open-Source Software, OSS)开发逐渐成为主流的软件开发模式之一,这种模式极大地依赖于开发者之间的协作。而Pull Request(PR)的机制被广泛应用于分布式软件开发中,以提升协作效率。在GitHub等开源平台上,PR允许开发者提交代码变更请求,由项目维护者(管理员)进行代码审查并决定是否将代码合并到主分支中。然而,随着开源项目活跃度的提高,PR的数量急剧增长,这使得管理员的工作负担加重,并且导致PR处理的时间延迟。如何高效地管理和预测PR的接受状态,已成为研究者和开发者关注的热点问题。
基于这一背景,来自浙江大学区块链与数据安全国家重点实验室的Kexing Chen、Lingfeng Bao、Xing Hu及来自华为软件工程应用技术实验室的Xin Xia和Xiaohu Yang联合发表了一篇名为《e-predictor: An Approach for Early Prediction of Pull Request Acceptance》的研究论文。该论文发表于2025年《Science China Information Sciences》(Vol. 68, Iss. 5, DOI: https://doi.org/10.1007/s11432-022-3953-4),文章系统性地提出了一种新的预测方法“e-predictor”,用于在PR创建时即刻预测其是否会被合并,旨在减轻管理员的负担并提供快速的反馈。
研究背景与创新动机
以Pull Request为核心的开发模式虽然提高了软件开发的协作效率,但随之带来的挑战也显而易见。以GitHub为例,据其统计,2021年已有超过1.7亿个PR被合并。然而,这些PR数量的爆炸式增加,给管理员带来了巨大的审查压力。据文献统计,PR从创建到关闭的平均时间为37天,这在一定程度上阻碍了项目的及时推进。现有研究试图通过预测模型提前甄别可能被接受的PR,以减少审查工作量。然而,大部分已提出的模型需要依赖PR创建后的评论、讨论等动态信息,这样的模型虽然能提供较好的预测效果,但因为依赖后续信息并不能真正降低管理员的初始负担。
为了解决这一缺陷,该研究提出了“e-predictor”,一个在PR创建时利用早期特征和深度语义特征进行预测的模型,能够更早地帮助管理员对PR优先级作出评估并估算其工作量。
研究工作流程
研究团队设计了系统性的研究方法,将e-predictor的开发与验证分为多个阶段。
数据收集与预处理
研究团队从GitHub上收集了49个最受欢迎的开源项目的PR数据,共计475,192条PR。为了确保这些项目具有代表性,他们对项目进行了严格筛选,剔除了教程类项目、fork分支项目以及在GitHub上仅起到备份作用的项目。之后,他们基于多种准则判断PR是否被合并,包括:
- 检查PR的“merged at”字段是否非空;
- 确认PR中的提交是否被包含在项目主分支;
- 在PR的最后三条评论中匹配合并动作的关键词(如“merged”或“committed”);
- 检查项目中的提交中是否提及特定PR。
最后,对于未满足以上合并标准的PR,研究团队将其视为被拒绝的PR。
PR的描述部分经过文本预处理(去掉特殊字符等噪声),而代码变更部分仅保留了源代码的新增和删除行。
特征提取
e-predictor提取了两大类特征:手工统计特征和深度语义特征。其中,手工统计特征分为以下三个维度:
- 贡献者特征(Contributor Profile): 包括贡献者在提交PR之前的历史活动,例如提交过的项目、代码提交次数、PR提交次数、问题(issue)参与记录,以及是否为机器人账户等。
- PR特征(Specific Pull Request): 包括PR描述的长度、提交的数量、变更的代码行数,以及是否包含测试文件或文档文件等。
- 项目特征(Project Profile): 包括PR提交时项目的整体状态,例如之前一个月内的PR提交量、讨论评论量、问题关闭量等。
为了捕获更深层次的语义信息,研究团队引入了基于预训练模型的深度语义特征提取:
- PR描述的特征: 使用RoBERTa模型对文本进行编码,生成768维的特征向量。
- 代码变更的特征: 使用CodeBERT模型对源代码变更进行编码,生成768维的特征向量。
这两部分特征向量经过降维处理后合并为一个30维的深度语义向量。
预测模型
在构建预测模型方面,研究团队选用了XGBoost分类器。XGBoost因其在处理大规模、高维度数据时具有良好的性能,被广泛用于各类预测任务。因此,e-predictor最终结合了手工统计特征和深度语义特征,共计76维用于训练XGBoost模型。
研究结果
性能评估
研究团队通过两种验证策略评估了e-predictor的性能:10折交叉验证(10-fold Cross-Validation)和时间感知验证(Time-Aware Validation)。模型性能主要通过以下指标评估:F1分数、AUC值(ROC曲线下面积)、以及Precision和Recall。
实验结果显示,e-predictor在预测PR是否会被接受时表现优异: - 在10折交叉验证中,e-predictor的F1@Merge达到90.1%,AUC值为85.4%,显著优于其他基线模型。 - 在时间感知验证中,其AUC值为81.6%,同样优于基线模型。
然而,由于数据集本身的接受与拒绝比例大约为7:3,e-predictor在预测PR被拒绝(F1@Reject)方面的表现稍弱,仅为60.5%(10折交叉验证),但其Precision@Reject达到了75.1%,表明其对拒绝案例的判断较为精准。
特征重要性分析
通过对手工特征的进一步分析,研究团队发现PR描述的质量(例如描述内容的详细程度)和贡献者在目标项目中的过往经验是决定PR接受状态的重要因素。这说明: 1. 清晰且高质量的描述能够提升PR的接受率; 2. 参与过历史合并的经验可以显著提高开发者后续PR通过的可能性。
研究意义与价值
该研究深远意义在于其提出了一种更加实际且高效的PR预测方法。e-predictor可以在PR创建时即通过早期特征和深度语义分析,为管理员提供决策支持,显著降低其工作负担。同时,这一系统可以为贡献者提供快速反馈,让其有机会在PR创建后立刻优化代码或描述。更为重要的是,这项研究展示了如何将深度学习技术与传统特征工程相结合,解决实际软件工程中的问题。
此外,该研究向OSS社区提供了一个强大的工具,不仅增强对PR管理的效率,还为研究者了解OSS项目的协作模式提供了数据基础。
总结与展望
e-predictor为自动化处理PR提出了一个行之有效的解决方案,其方法论和技术创新具有重要的学术意义和实践价值。尽管在研究中仍有一些不足(如数据不平衡等问题),但通过未来扩展更多特征和改进算法,可进一步提升该工具的适用性和准确性。研究团队还计划扩大研究数据集,开发更通用、更强大的模型,用于支持更广泛的开源项目。