中文

基于深度学习的代码评审:范式转变还是双刃剑?

软件工程 2024-12-02 v3

摘要

已有多种技术被提出用于自动化代码评审。早期的支持包括为给定变更推荐最合适的评审者或确定评审任务的优先级。随着深度学习在软件工程中的应用,自动化水平被推向了新的高度,出现了能够像人类评审者一样用自然语言对源代码提供反馈的方法。此外,最近的工作记录了开源项目采用大型语言模型(LLMs)作为共同评审者的情况。尽管该领域的研究非常活跃,但关于在代码评审流程中纳入自动生成的代码评审的实际影响却知之甚少。虽然有许多方面值得研究,但在这项工作中,我们重点关注其中三个方面:(i) 评审质量,即评审者识别代码中问题的能力;(ii) 评审成本,即评审代码所花费的时间;(iii) 评审者信心,即评审者对所提供反馈的自信程度。我们进行了一项对照实验,邀请了29位专家在有/无自动生成的代码评审支持的情况下评审不同的程序。在实验期间,我们监控了评审者的活动,记录了超过50小时的代码评审过程。我们表明,评审者认为LLM自动识别的大部分问题是有效的,并且将自动化评审作为起点强烈影响了他们的行为:评审者倾向于关注LLM指出的代码位置,而不是在代码的其他部分搜索额外的问题。从自动化评审开始的评审者识别出了更多低严重性问题,然而,与完全手动过程相比,并未识别出更多高严重性问题。最后,自动化支持并未节省时间,也没有提高评审者的信心。

关键词

引用

@article{arxiv.2411.11401,
  title  = {Deep Learning-based Code Reviews: A Paradigm Shift or a Double-Edged Sword?},
  author = {Rosalia Tufano and Alberto Martin-Lopez and Ahmad Tayeb and Ozren Dabić and Sonia Haiduc and Gabriele Bavota},
  journal= {arXiv preprint arXiv:2411.11401},
  year   = {2024}
}