一句话:提出 Sofia 审查推荐器,兼顾审查专业性与知识分散,以低开销降低开发者流失风险。
开发者流失会造成知识丢失与缺陷增加,但现有缓解策略常加重负担。本文提出用代码审查推荐分散知识,并以 Expertise、CoreWorkload 和 FaR 评估推荐器。按文件所有权分配评审员会使知识集中于核心开发者,流失风险最高增 65%;学习/保留感知推荐器虽降风险 29%,但专业性降 26%。为此提出 Sofia:文件未被囤积时推荐专家,有风险时分散知识。集成到 GitHub PR 后,专业性提高 6%、核心负载仅增 0.09%、风险文件减少 28%,并开源 bot 与数据。
Developer turnover is inevitable on software projects and leads to knowledge loss, a reduction in productivity, and an increase in defects. Mitigation strategies to deal with turnover tend to disrupt and increase workloads for developers. In this work, we suggest that through code review recommendation we can distribute knowledge and mitigate turnover with minimal impacton the development process. We evaluate review recommenders in the context of ensuring expertise during review, Expertise, reducing the review workload of the core team, CoreWorkload, and reducing the Files at Risk to turnover, FaR. We find that prior work that assigns reviewers based on file ownership concentrates knowledge on a small group of core developers increasing risk of knowledge loss from turnover by up to 65%. We propose learning and retention aware review recommenders that when combined are effective at reducing the risk of turnover by -29% but they unacceptably reduce the overall expertise during reviews by -26%. We develop the Sofia recommender that suggests experts when none of the files under review are hoarded by developers, but distributes knowledge when files are at risk. In this way, we are able to simultaneously increase expertise during review with a ΔExpertise of 6%, with a negligible impact on workload of ΔCoreWorkload of 0.09%, and reduce the files at risk by ΔFaR -28%. Sofia is integrated into GitHub pull requests allowing developers to select an appropriate expert or "learner" based on the context of the review. We release the Sofia bot as well as the code and data for replication purposes.
DOI 原文 ·
@inproceedings{paperbot5643,
title = {Mitigating turnover with code review recommendation},
author = {Ehsan Mirsaeedi and Peter C. Rigby},
booktitle = {ICSE},
year = {2020},
doi = {10.1145/3377811.3380335}
}