代码评审 AI 助手

本文介绍云效 AI 助手在智能评审场景的功能。AI 助手结合代码内容变更,提供代码评审、修复建议、自定义规则、智能对话等能力,可降低人工评审成本,提高代码评审效率。

说明

使用条件:高级版专属功能,版本说明参见套餐版本

评审标题/描述自动生成

  1. 代码库开发者及以上角色创建合并请求,选择源/目标分支;

  2. 点击标题或描述输入框中的自动生成图标,可触发对应内容的自动生成;

4-24

创建完成后,进入评审详情也支持基于变更内容触发自动生成更新描述信息。

代码智能评审

设置 AI 评审规则

  1. 代码库管理员进入代码库设置,选择 AI 助手设置

  2. 配置 AI 评审默认设置

    1. 若选择 无,代表任意分支作为目标分支新建合并请求时,都不会自动触发评审;

    2. 若选择全部,代表任意分支作为目标分支新建合并请求时,都会自动触发评审;

    3. 支持指定命名的分支,作为目标分支新建合并请求时,能够自动触发评审。分支名称支持通配符,书写规则为 glob 语法:

      • ?匹配单个字符(不包括/)。

      • *匹配单级路径下的多个字符。

      • **匹配多级路径。

      • 具体规则请参考: glob

  3. 配置自定义 AI 评审规则(可选):通过配置适合团队评审偏好的评审规则,可以提高精度和降低幻觉。

自定义 AI 评审规则说明

云效支持通过 yaml 文件的形式定义评审规则,以源分支下命名为 .aliyun/code/code_review.yaml 的 yaml 文件为准,评审规则针对当前仓库所有分支生效。

yaml 文件支持的语法

基于以下示例进行说明,文件标识关键字 reviews,支持通过关键字 ignores 设置忽略评审的文件,通过 language 配置评审语言,通过 problem_level 设置评审的严格程度, review_mode 设置评审模式,以及通过关键字 path_instructions 设置指定路径的自定义评审规则。在 BY_COMMIT 评审模式下,还可以通过关键字 enable_review_commit_message 设置是否对提交说明进行评审。

reviews:
  # files that ignore to review, glob pattern
  ignores:
    - myfile.txt
    - myfolder/
    - "*.log"
    - "**/logs"
    - /debug.log
    
  # basic config
  language: "zh-CN" # 可选值 [zh-CN|en-US]
  problem_level: "CRITICAL" # 可选值 [BLOCKER|CRITICAL|MAJOR|MINOR] 
  review_mode: "DEFAULT" # 可选值 [DEFAULT|BY_COMMIT]
  enable_review_commit_message: true # 仅当 review_mode 为 BY_COMMIT 时生效,可选值 [true|false]

  # instructions match specify file path
  path_instructions:
  - path: "**/*.js"
    instructions: 'Review the JavaScript code against the Alibaba JavaScript style
      guide and point out any mismatches'
  - path: "tests/**.*"
    instructions: |-
      Review the following unit test code written using the Mocha test library. Ensure that:
      - The code adheres to best practices associated with Mocha.
      - Descriptive test names are used to clearly convey the intent of each test.
  1. 忽略部分文件不进行评审。

针对部分配置文件、测试文件可能无需进行评审,支持通过 ignores 关键词配置忽略评审的文件路径规则,路径描述支持 glob 语法设置通配符,具体规则参考 glob

reviews:
  # files that ignore to review, glob pattern
  ignores:
    - myfile.txt
    - myfolder/
    - "*.log"
    - "**/logs"
    - /debug.log
  1. 设置评审基础配置

  • language 参数:支持选择 zh-CN(中文) 或者 en-US(英文),默认中文;

  • problem_level 参数:支持选择 BLOCKER(仅报阻断问题)、CRITICAL(报严重及以上问题)、MAJOR(报主要及以上问题)、MINOR(报建议及以上问题),评审严格程度递减,默认为 CRITICAL。如果设置为 MINOR,可能产生较多的评审问题;

  • review_mode 参数:支持选择 DEFAULT(默认评审模式)或者 BY_COMMIT(单提交评审模式),默认为默认评审模式;

  • enable_review_commit_message 参数:仅当 review_mode 参数选择 BY_COMMIT 时生效,用于决定在单提交评审模式中是否启用针对提交说明的评审,默认为 true。开启后,将会在评审总结中增加“提交说明建议”模块,依次对每个提交的提交说明给出改进建议;

reviews:
  # basic config
  language: "zh-CN" # 可选值 [zh-CN|en-US]
  problem_level: "CRITICAL" # 可选值 [BLOCKER|CRITICAL|MAJOR|MINOR]
  review_mode: "DEFAULT" # 可选值 [DEFAULT|BY_COMMIT] 
  enable_review_commit_message: true # 仅当 review_mode 为 BY_COMMIT 时生效,可选值 [true|false]
  1. 自定义评审规则。

团队可能存在自己的评审偏好,支持通过 path_instructions 关键词配置指定文件路径的自定义评审规则,可通过自然语言进行描述。路径描述支持 glob 语法设置通配符,具体规则参考 glob

reviews:
  # instructions match specify file path
  path_instructions:
  - path: "**/*.js"
    instructions: 'Review the JavaScript code against the Alibaba JavaScript style
      guide and point out any mismatches'
  - path: "tests/**.*"
    instructions: |-
      Review the following unit test code written using the Mocha test library. Ensure that:
      - The code adheres to best practices associated with Mocha.
      - Descriptive test names are used to clearly convey the intent of each test.

使用 AI 智能评审

评审限制

AI 评审目前对变更大小的限制如下:

  1. 不支持评审超过 1000 个变更行;

  2. 不支持评审超过 100 个变更文件;

触发评审

  1. 新建合并请求时,支持设置新建后是否立即执行 AI 评审,若AI 评审默认设置已配置分支规则,则命中目标分支规则时将自动勾选 AI 评审。

4-24

  1. 合并请求详情中,支持开发者及以上角色的用户手动触发评审。

  • 若有 AI 评审或评论正在进行中,则不可频繁触发,需等待执行完成后触发。

  • 若当前版本已经执行过 AI 评审,则不可重复触发,需更新代码内容后再次触发。

4-24

评审效果

  1. 代码变更内容摘要,包括更改文件的列表和文件描述。

4-24

  1. 代码行级问题审查和修复建议:

4-24

  1. 评审总结

4-24

  1. 评审模式:可选的评审模式包含默认评审模式和单提交评审模式,在评审规则文件中可通过关键字 review_mode 进行指定。

  • 默认评审模式:将合并请求中所有提交合并成一个整体代码变更来评审,适合小型、原子化的变更;

  • 单提交评审模式:对合并请求中的提交逐一评审,适合提交数量多、变更行数大的复杂合并请求;

    • 评审粒度更小,更容易关注到小而关键的改动;

    • 评审时结合提交说明,理解开发者的真实意图,从而给出更贴切的建议和更少的误判:image

    • 评审提交说明,从内容质量、格式问题等方面给出提交说明修改建议:image

单提交评审模式的局限性:相比于默认评审模式,单提交评审由于评审粒度更小,当提交数量较大时会使评审耗时显著提高,极端情况下耗时会达到默认评审模式的 3 倍以上。请结合具体需求选择合适的评审模式。