☰
如何选对 open-code-review 的 --format 与 --audience:输出形式完全指南
2026/10/27 8:58:28 网站建设 项目流程

如何选对 open-code-review 的 --format 与 --audience:输出形式完全指南

【免费下载链接】open-code-reviewFast, efficient, battle-tested at Alibaba's scale. Hybrid architecture code review tool: deterministic pipelines + LLM Agent, precise line-level comments, built-in multi-language ruleset (NPE, thread-safety, XSS, SQL injection), OpenAI & Anthropic compatible.项目地址: https://gitcode.com/GitHub_Trending/op/open-code-review

open-code-review(ocr)是阿里巴巴开源的 AI 代码评审工具,混合架构(确定性流水线 + LLM Agent)在阿里规模下经过实战检验。跑一次ocr review之后,评审结果以什么形式输出,直接决定了它是给人看的、还是给脚本和 CI 流水线消费的。本文用最短的路径讲清两个关键参数——--format和--audience的作用、区别与组合方式,帮你一次选对输出形式。

📖 完整参数说明可查阅官方中文文档:cli-reference.md

一张表看懂:--format 与 --audience 各管什么

参数可选值默认控制什么
--format(-f)text/json/sariftext输出内容的结构:人类可读文本、机器可解析 JSON,或 SARIF 2.1.0 报告
--audiencehuman/agenthuman进度行的开关:human实时打印[ocr]进度;agent完全静默,只出最终结果

一个最易踩的坑先说在前面:--audience agent并不隐含--format json。两者控制的是不同的事——前者管"屏蔽 UI",后者管"结构化载荷"。需要 JSON 时请显式加上--format json。

三种 --format 输出形式详解

1. text:人类可读(默认)

默认形式。评审运行时流式打印进度行(文件读取、code_search、Plan 完成等),随后每条评论一个分块:

ocr review --commit abc123
─── src/foo.go:42-47 ─── Concurrent map access without a lock — wrap with sync.RWMutex. - m[k] = v + mu.Lock(); defer mu.Unlock(); m[k] = v

结尾附一份摘要:评审文件数、评论数、token 用量与耗时。适合自己在终端里跑评审。

2. json:机器可读

ocr review --format json > result.json # 进度仍显示在终端上 ocr review --format json | jq .summary # stdout 是单个 JSON 文档

JSON 文档始终独占 stdout,顶层字段包括status、llm、summary、comments(含path、start_line、end_line、suggestion_code)、可选的warnings与session_id(可用于--resume恢复中断的评审)。这是写脚本、做自动化、接入其他工具时的首选形式。

3. sarif:接入平台代码扫描

ocr review --format sarif > report.sarif

输出 SARIF 2.1.0 报告,专为 GitHub Code Scanning 等平台代码扫描入口设计。注意两点:

  • --preview与--format sarif不能同时使用(预览没有已完成的发现可供输出);
  • delegate 模式仅支持text与json。

实现见 sarif.go。

两种 --audience:human 还是 agent?

  • human(默认):流式打印进度行。当--format为json或sarif时,进度行会自动改道 stderr,保证 stdout 是一份干净的、可被解析器直接消费的结构化文档——这解决了"边看进度边管道解析"的经典冲突。
  • agent:完全抑制所有进度行,只输出最终摘要 / 结果文档。适合 CI / 流水线中把结果交给另一个 agent 消费的场景。

底层逻辑非常清晰:--audience agent时进度直接丢弃;human+ 结构化格式时进度重定向到 stderr。参见 shared.go 中的newQuietHandle实现。

快速决策清单:怎么选?

场景推荐组合
本地终端自己看--format text(默认即可)
想看进度 + 结果给脚本解析--format json(默认human,进度自动走 stderr)
CI / 流水线静默执行--format json --audience agent
接入代码扫描平台--format sarif
把结果写入文件加--output result.json(文本格式会自动剥离 ANSI 颜色码)

几个实用提示 💡

  • 退出码:0表示评审完成(可能零评论、可能带警告);1表示致命错误(参数错误、端点无法解析等),错误文本打印到 stderr——CI 里直接用它判断成败。
  • 区分"无变更"与"无发现":没有可评审文件时,JSON 模式会输出status: "skipped"的空外壳,调用方据此区分两种情况。
  • 重试报告:想看每次尝试的细节,用--format json(retry_report字段)。
  • delegate 模式:--format只接受text或json,不支持sarif。
  • 传了非法值会直接报错并提示合法取值,如invalid --audience value "robot": must be 'human' or 'agent'。

相关源码与文档

  • 参数定义与校验:shared_flags.go
  • 进度静默/重定向机制:shared.go
  • SARIF 生成:sarif.go
  • 结果渲染与重试报告:output.go
  • 完整 CLI 参考(中文):cli-reference.md

一句话总结:--format决定"输出长什么样",--audience决定"过程显不显示"。本地看结果用默认组合,脚本消费加--format json,流水线静默再加--audience agent,接代码扫描用--format sarif。

【免费下载链接】open-code-reviewFast, efficient, battle-tested at Alibaba's scale. Hybrid architecture code review tool: deterministic pipelines + LLM Agent, precise line-level comments, built-in multi-language ruleset (NPE, thread-safety, XSS, SQL injection), OpenAI & Anthropic compatible.项目地址: https://gitcode.com/GitHub_Trending/op/open-code-review

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询