中文

利用编程语言知识单元为拉取请求推荐评审者:一项实证研究

软件工程 2023-05-10 v1

摘要

代码评审是软件开发中质量保证的关键环节。为给定代码变更确定合适的评审者需要理解所更改代码的特征、识别每位潜在评审者的技能(专长画像),并在二者间找到良好匹配。为便利此任务,我们设计了一个基于编程语言知识单元(KU)运行的代码评审者推荐器。我们将 KU 定义为由给定编程语言的一个或多个构造块所提供的 cohesive 关键能力集合。我们使用 Java 编程语言的认证考试来实现我们的 KU。我们从 GitHub 上 10 个活跃维护的 Java 项目中检测 KU,涵盖 290K 次提交与 65K 个拉取请求(PR)。接下来,我们基于检测到的 KU 生成开发者专长画像。最后,这些基于 KU 的专长画像被用于构建代码评审者推荐器(KUREC)。在 RQ1 中,我们观察到 KUREC 表现与性能最佳的基线推荐器(RF)相当。从实践角度看,我们强调 KUREC 的性能比 RF 更稳定(更低的四分位距),因而更具一致性且可能更可信。接着,在 RQ2 中我们通过将 KUREC 与基线推荐器结合设计了三种新推荐器。这些新组合推荐器优于 KUREC 与各个基线。最后,在 RQ3 中我们评估了当 KUREC 与组合推荐器的推荐偏离真实值时其合理程度。综合所有 RQ 的结果,我们得出结论:KUREC 与其中一种组合推荐器(AD_FREQ)总体上优于我们所研究的基线推荐器。该领域的未来工作应因而(i)将基于 KU 的推荐器作为基线,且(ii)试验组合推荐器。

关键词

引用

@article{arxiv.2305.05654,
  title  = {Using Knowledge Units of Programming Languages to Recommend Reviewers for Pull Requests: An Empirical Study},
  author = {Md Ahasanuzzaman and Gustavo A. Oliva and Ahmed E. Hassan},
  journal= {arXiv preprint arXiv:2305.05654},
  year   = {2023}
}