代码评审 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 设置评审的严格程度,以及通过关键字 path_instructions 设置指定路径的自定义评审规则。

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] 

  # 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,可能产生较多的评审问题;

reviews:
  # basic config
  language: "zh-CN" # 可选值 [zh-CN|en-US]
  problem_level: "CRITICAL" # 可选值 [BLOCKER|CRITICAL|MAJOR|MINOR] 
  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