Code Review Agent 代码评审智能体

基于AI的代码评审工具,使用此工具可以自动生成 Pull Request(PR) 描述,提供代码改进建议,生成Change Logs。支持接入主流DevOps 平台。

代码评审智能体(Code Review Agent)是利用生成式AI技术实现的自动化代码评审功能,它可以自动扫描用户提交的代码变更,生成概要性描述或者评审意见,也可以接收用户的提问并根据代码变更内容给出答案。代码评审智能体旨在为参与代码评审的团队成员提高工作效率,特别是在面对改动量比较大的评审任务时,使用代码评审智能体可以大幅节省评审者用来阅读代码/理解代码的时间,同时也可以帮助被评审者提供可能的修复建议。

根据我们的测试,大多数团队的代码评审任务会涉及10个左右的文件修改以及几十处代码修改,类似的评审任务需要评审者花费至少30分钟的时间阅读和理解代码,再花费大致30分钟到1小时的时间给出评审意见。代码评审智能体则可以在5分钟内给出概要性说明(使用 summary 指令)以及评审意见(使用review)指令,然后再由评审者阅读这些概要性说明和评审意见。仅这一个环节就将为团队成员在每个评审任务上节省超过15-20分钟的时间,效率提升3倍以上(按人工30分钟完成理解,AI辅助下只需要10分钟完成理解)。

代码评审智能体支持与常见的DevOps平台进行集成,通过 Web Hook 的方式在用户提交 Git 拉取请求 (Pull Request 或者 Merge Request)的时候自动启动智能体介入评审过程,也可以通过指令的方式独立触发特定评审任务。

使用场景

场景1 - 自动生成PR摘要信息

利用自动摘要特性,可以简化用户创建PR的流程,同时也可以帮助用户快速了解PR的内容。对于一个包含10项代码变更的PR,使用自动摘要特性可以节省用户大约10分钟的时间。

  1. Azure DevOps 中创建一个 拉取请求(PR),这个过程和创建普通的PR没有任何区别,用户也不必对PR内容进行任何说明,这些内容可以由Code Review Agent自动生成了填写。在以下 New pull request 界面中,直接点击 Create 按钮即可。

创建PR

  1. 稍等片刻,Code Review Agent 会自动更新当前PR的页面,这个过程根据PR所包含的变更多少会有所变化,一般需要30秒-1分钟的时间完成整个更新过程。这个过程中用户无需刷新页面,Azure DevOps 的 PR 视图可以实时更新任何修改。

下图展示了更新完成的PR视图,其中包含了4项更新内容:

  • (1) 自动识别了PR类型为:增强功能
  • (2) 自动扫描所有变更内容后,生成了条目化的汇总信息,方便用户迅速了解PR内容
  • (3) 对所有变更内容进行分类,比如:功能/文档,并对每个文件的变更内容进行汇总说明
  • (4) 利用Azure DevOps所提供的标记功能对当前PR进行标记,方便后续检索

PR摘要信息

场景2 - 自动生成评审意见

利用自动生成评审意见的特性,用户可以快速了解PR中可能存在的问题,同时也可以提高评审质量。根据代码变更的复杂程度和数量,使用自动生成评审意见特性为每一处评审点节省10-20分钟的时间,同时还可以帮助开发者定位一些人工难以发现的问题。

  1. 用户可以通过 /review 指令对当前PR内容提出评审请求,Code Review Agent 会给出评审意见。在当前PR的评论中输入 /review 指令,并点击 Comment

PR Review

  1. 稍等片刻,Code Review Agent 会在后台自动评审代码,生成评审意见。这个过程中你可能会看到以下提示:

PR Review Progress

  1. 生成的审查意见如下,其中包括3部分内容
  • (1) PR审查建议:包括给予评审者的建议以及对这个PR评审难度的一个预估;识别当前PR是否包含了测试内容(主要识别单元测试);可能需要关注的重点问题以及代码改进意见。
  • (2) 可能出现的安全问题
  • (3) 按文件给出的评审意见

PR Review Result

场景3 - 智能问答

针对一些表难以理解的代码变更,利用智能问答特性可以帮助用户快速了解PR中的变更内容。根据我们的测试,每一次智能问答可以为用户节省大约10分钟或者更多的时间。当用户遇到一些自己不熟悉的代码语言、语法或着问题领域时,可能需要花费更多的时间去补充自己的知识才能识别PR中的问题,在这种场景下,智能问答特性可以帮助用户节省更多的时间。

  1. 用户可以通过 /ask 指令询问任何有关当前PR的问题,比如用户可以按以下格式输入问题:
/ask 这个PR对levenshteinDistance这个方法进行了什么修改?
  1. 生成的结果如下

注意:这里给出了详细的变更内容,并对变更内容进行了自然语言说明。利用这个特性,用户可以对PR中比较难以理解的变更内容进行询问,提高处理PR的效率和质量。

PR ASK

指令列表

当前 Code Review Agent 所支持的指令内容如下,我们持续改进现有指令的生成效果并根据需要持续添加新的指令内容:

  • /summary: 生成PR描述,创建PR时会自动生成,也可以手工执行。
  • /review:触发代码审查并提供反馈。
  • /ask [问题]:提出具体问题并获取回答。
  • /update_changelog:自动生成并更新变更日志。
  • /generate_labels:自动生成标签,并添加到当前PR中

配置指南

使用 Code Review Agent 之前需要在 Azure DevOps 对应的 团队项目(Team Project) 中配置对应的Service Hook,请参考以下链接获取详细的配置指南:配置指南