本文介绍云效 AI 助手在智能评审场景的功能。AI 助手结合代码内容变更,提供代码评审、修复建议、自定义规则、智能对话等能力,可降低人工评审成本,提高代码评审效率。
使用条件:高级版专属功能,版本说明参见套餐版本。
评审标题/描述自动生成
-
代码库开发者及以上角色创建合并请求,选择源/目标分支;
-
点击标题或描述输入框中的自动生成图标,可触发对应内容的自动生成;
创建完成后,进入评审详情也支持基于变更内容触发自动生成更新描述信息。
代码智能评审
设置 AI 评审规则
-
代码库管理员进入代码库设置,选择 AI 助手设置;
-
配置 AI 评审默认设置:
-
若选择 无,代表任意分支作为目标分支新建合并请求时,都不会自动触发评审;
-
若选择全部,代表任意分支作为目标分支新建合并请求时,都会自动触发评审;
-
支持指定命名的分支,作为目标分支新建合并请求时,能够自动触发评审。分支名称支持通配符,书写规则为 glob 语法:
-
?匹配单个字符(不包括/)。 -
*匹配单级路径下的多个字符。 -
**匹配多级路径。 -
具体规则请参考: glob。
-
-
-
配置自定义 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.
-
忽略部分文件不进行评审。
针对部分配置文件、测试文件可能无需进行评审,支持通过 ignores 关键词配置忽略评审的文件路径规则,路径描述支持 glob 语法设置通配符,具体规则参考 glob。
reviews:
# files that ignore to review, glob pattern
ignores:
- myfile.txt
- myfolder/
- "*.log"
- "**/logs"
- /debug.log
-
设置评审基础配置
-
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]
-
自定义评审规则。
团队可能存在自己的评审偏好,支持通过 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 评审运行环境及高级分析能力。开启跨文件分析能力后,评审 Token消耗和耗时会有所增加。
-
enable 参数:是否启用沙箱环境运行 AI 评审,可选值 [true|false],默认 false。仅开启此项不会生效,需配合具体能力开关使用。
-
enable_crossfile_analyze 参数:是否启用跨文件变更检测能力,可选值 [true|false],默认false,仅在 enable 为 true 时生效。开启后,AI评审将自动识别跨文件的破坏性变更(如返回值语义变化、未处理异常、参数顺序调整等)。
reviews:
# 沙箱配置(可选)
sandbox:
enable: true
enable_crossfile_analyze: true
后续将提供更多沙箱内高级能力,敬请期待。
全局代码评审配置
云效支持在企业级别配置统一的代码评审规则,所有仓库可自动继承。
配置方法:在企业下创建名为 yx-ai-codereview 的代码库,在该仓库中创建.aliyun/code/code_review.yaml.aliyun/code/code_review.yaml 配置文件,配置格式与本节上述内容相同。
配置合并规则:
|
字段类型 |
合并策略 |
|
ignores |
追加合并,本地配置在前,全局配置在后 |
|
path_instructions |
智能覆盖,文件被本地规则匹配则忽略全局规则 |
|
language、problem_level 等基本字段 |
本地配置完全覆盖全局配置 |
常见问题:
Q1: 全局配置仓库必须叫什么名字?
A: 必须命名为 `yx-ai-codereview`。
Q2: 如何让某个仓库不使用全局配置?
A: 在仓库中创建本地配置文件即可覆盖。
使用 AI 智能评审
评审限制
AI 评审目前对变更大小的限制如下:
-
不支持评审超过 1000 个变更行;
-
不支持评审超过 100 个变更文件;
触发评审
-
新建合并请求时,支持设置新建后是否立即执行 AI 评审,若AI 评审默认设置已配置分支规则,则命中目标分支规则时将自动勾选 AI 评审。
-
合并请求详情中,支持开发者及以上角色的用户手动触发评审。
-
若有 AI 评审或评论正在进行中,则不可频繁触发,需等待执行完成后触发。
-
若当前版本已经执行过 AI 评审,则不可重复触发,需更新代码内容后再次触发。
在右侧面板的AI 评审区域,单击云效AI助手旁的请求评审按钮即可触发评审。
评审效果
-
代码变更内容摘要,包括更改文件的列表和文件描述。
AI智能评审结果还包含变更时序图,用于展示代码涉及的组件间调用关系。
-
代码行级问题审查和修复建议。
云效AI助手在合并请求的代码差异视图中,针对具体代码行标注问题并给出修复建议。评审评论包含问题严重级别(如Critical | Bugs)、问题详情以及修复方案的代码差异对比(例如为status字段添加.refine()校验逻辑以限制有效状态ID范围),右侧面板显示AI评审状态和待解决问题计数。
-
评审总结
评审报告包含评审意见概览,按 Blocker、Critical、Major、Minor 四个严重等级分类统计问题数量,并在下方列出各等级的具体问题描述及对应代码文件与行号。
-
评审模式:可选的评审模式包含默认评审模式和单提交评审模式,在评审规则文件中可通过关键字 review_mode 进行指定。
-
默认评审模式:将合并请求中所有提交合并成一个整体代码变更来评审,适合小型、原子化的变更;
-
单提交评审模式:对合并请求中的提交逐一评审,适合提交数量多、变更行数大的复杂合并请求;
-
评审粒度更小,更容易关注到小而关键的改动;
-
评审时结合提交说明,理解开发者的真实意图,从而给出更贴切的建议和更少的误判:例如,AI助手在评审中检测到代码
FILE_MAX_SIZE = 1024 * 1024L(即1MB)与提交信息描述的1GB不一致,判定为 Critical 级别 Bug,并建议修改为FILE_MAX_SIZE = 1024L * 1024 * 1024以匹配实际需求。 -
评审提交说明,从内容质量、格式问题等方面给出提交说明修改建议:工具生成提交说明建议页面,针对每个提交记录检查格式问题(如主题行是否使用英文、是否使用 imperative mood)和内容质量(如描述是否清晰、body 是否存在重复描述),并给出改进建议,例如将中文主题改写为英文祈使句
Add file meta info to file list API response。
-
单提交评审模式的局限性:相比于默认评审模式,单提交评审由于评审粒度更小,当提交数量较大时会使评审耗时显著提高,极端情况下耗时会达到默认评审模式的 3 倍以上。请结合具体需求选择合适的评审模式。