中文

这次构建失败与我的补丁有关吗?关于连续集成中无关构建失败的实证研究

软件工程 2026-05-08 v1

摘要

连续集成(CI)系统通常会并行运行许多构建。在这种情况下,合法的构建失败可能并非由触发其的 code push 所致。此类无关构建失败会浪费开发者的时间,因为开发者必须确定该失败是否与当前 change 相关。我们研究了来自七个开源 Apache 项目的 77,354 个 CI 构建失败,以了解和预测无关构建失败。我们发现开发者在确定失败与否与其推送相关方面中位耗时为 4 小时。我们还对 371 个确认为无关构建失败的样本进行文件分析,这些样本从 10,316 个潜在无关构建失败中抽取。分析显示,无关 test failure 占开发者将构建失败分类为无关的 20% 案例。为了预测无关构建失败,我们从 issue reports、issue comments 和与触发推送相关的 commits 中提取 33 个特征。我们为七个 Apache 项目构建半监督正负样本(PU)学习模型。模型在精确率从 0.70 到 0.88、召回率从 0.30 到 1.00、F1 分数从 0.44 到 0.91、AUC 从 0.63 到 0.97 之间取得好结果。特征重要性分析表明,CI 延迟、重复错误消息和前置 comment 数量是预测无关构建失败的有用指标。这些结果表明 PU 学习可以帮助开发者识别不太可能由其当前推送引起的构建失败。

关键词

引用

@article{arxiv.2605.05564,
  title  = {Is this Build Failure Related to my Patch? An Empirical Study of Unrelated Build Failures in Continuous Integration},
  author = {Andie Huang and Daniel Alencar da Costa and Grant Dick and Mariam El Mezouar},
  journal= {arXiv preprint arXiv:2605.05564},
  year   = {2026}
}

备注

44 pages, 13 figures, 5 tables