logo
0
0
WeChat Login
docs: 修正文档

PULL_REQUEST AI 代码评审

基于 CodeBuddy CLI 的 Pull Request 代码评审工具,自动对 PR 代码变更进行 AI 评审并发送评论。

注意,仅支持在以下流水线事件中使用:

  • pull_request
  • pull_request.update
  • pull_request.approved
  • pull_request.changes_requested
  • pull_request.comment
  • pull_request.comment@npc

功能特性

  • 自动获取 PR 的代码变更(diff)
  • 使用 CodeBuddy CLI 进行代码评审
  • 支持多种编程语言
  • 自动过滤非代码文件(lock 文件、图片、构建产物等)
  • 支持将评审结果发送到 PR 评论
  • 输出结构化 JSON 格式的评审结果

参数说明

  • output:评审结果输出文件路径。指定后评审结果会保存为 JSON 文件,不指定则直接输出到终端。
  • context:生成 diff 时包含的上下文行数,即变更代码前后各显示多少行。值越大,AI 能看到更多上下文,评审更准确,但也会增加 token 消耗。默认 5
  • verbose:是否显示详细日志。开启后会输出更多调试信息,包括 Git 命令执行、文件过滤详情等。默认 false
  • comment:是否将评审结果发送到 PR 评论。开启后会在 PR 页面添加评审总结评论和针对具体代码行的问题评论。默认 true
  • max_comments:发送 PR 评论时的最大评论数量。为避免评论过多影响阅读,会按问题严重程度排序后截取。默认 10
  • max_diff_size:允许的最大 diff 大小(字符数)。超过此大小的 diff 会被截断,部分文件可能不会被评审。默认 100000(约 10 万字符)
  • max_files:允许的最大评审文件数。超过此数量时只评审前 N 个文件,避免文件过多导致评审超时或 token 消耗过大。默认 30
  • fail_on_critical:当评审发现严重问题(critical)时是否返回非零退出码。开启后可用于流水线门禁,阻止有严重问题的代码合并。默认 false
  • prompt_output:将发送给 AI 的完整 prompt 输出到指定文件路径。用于调试和查看实际发送的评审内容,包括系统提示词和代码 diff。不指定则不输出

CNB 流水线配置

.cnb.yml 中配置:

main: pull_request: - stages: - name: code-review image: cnbcool/code-review:latest settings: # 输出文件路径 output: ./code_review.json context: 10 comment: true max_comments: 10 max_diff_size: 100000 # 是否在代码评审发现严重问题时返回非零退出码(流水线会失败) fail_on_critical: false # 将 prompt 输出到文件(调试用) # prompt_output: ./prompt.txt

code_review.json 输出格式

code_review.json 评审结果为 JSON 格式:

{ "status": "passed | needs_modification | critical", "issues": [ { "severity": "critical | warning | info", "file": "文件路径", "start_line": 42, "end_line": 45, "problem": "问题描述", "suggestion": "修复建议" } ] }
  1. status 状态说明
  • passed:代码质量良好,可以合并
  • needs_modification:存在需要修改的问题
  • critical:存在严重问题,必须修复
  1. severity 问题严重程度
  • critical:严重问题(安全漏洞、严重 Bug),必须修复
  • warning:中等问题(潜在风险、代码质量),建议修复
  • info:小问题/建议(代码风格、最佳实践),可选修复

退出码

  • 0:评审完成,无严重问题
  • 1:评审失败或运行错误
  • 2:发现严重问题(需启用 fail_on_critical