中文

代码审查中的重复构建:OpenStack 社区的实证研究

软件工程 2023-08-22 v1

摘要

代码审查是一种流行的实践,开发者相互评审彼此的变更。由于自动化构建可以识别低级问题(例如,语法错误、回归缺陷),软件组织将自动化构建纳入代码审查过程并不罕见。在此类代码审查部署场景中,提交的变更集必须同时获得同行代码审查者和自动化构建机器人的批准才能合入。由于自动化构建可能产生变更集状态的不可靠信号(例如,由于“不稳定”或非确定性执行行为),诸如 Gerrit 之类的代码审查工具允许开发者请求“recheck(重新检查)”,其在不更新变更集的情况下重复构建过程。我们推测,若不审慎使用,无限制的 recheck 命令将浪费时间和资源。为探索 recheck 命令在实际环境中的使用方式,本文对来自 OpenStack 社区的 66,932 次代码审查进行了实证研究。我们定量分析了(i)构建失败被 recheck 的频率;(ii)调用 recheck 改变构建失败结果的程度;以及(iii)调用 recheck 产生了多少浪费。我们观察到:(i)55% 的代码审查在报告构建失败后调用了 recheck 命令;(ii)调用 recheck 命令仅在 42% 的情况下改变了失败构建的结果;(iii)调用 recheck 命令使审查等待时间平均增加 2,200%,并等同于 187.4 计算年的浪费——足以与地球上最古老的陆生动物相竞争的计算资源。

关键词

引用

@article{arxiv.2308.10078,
  title  = {Repeated Builds During Code Review: An Empirical Study of the OpenStack Community},
  author = {Rungroj Maipradit and Dong Wang and Patanamon Thongtanunam and Raula Gaikovina Kula and Yasutaka Kamei and Shane McIntosh},
  journal= {arXiv preprint arXiv:2308.10078},
  year   = {2023}
}

备注

conference