用途:检测 API 定义中的破坏性变更,支持 protobuf、OpenAPI/Swagger、GraphQL 模式以及 Go 导出接口。工具为只读分析,可安全重复运行。
主要能力与使用方式:先通过 command -v 检查专用工具 buf(protobuf)与 oasdiff(OpenAPI)是否可用;缺失时回退到手动 git-diff 分析,并提示哪些工具可提高准确性。若 $ARGUMENTS 指定了具体文件则只分析这些文件,否则用 git diff --name-only $(git merge-base HEAD main) 找出相对基线分支变更的 API 文件,并按模式识别类型:.proto 为 Protobuf,openapi.yaml、swagger.json、.openapi.、.swagger.* 为 OpenAPI,.graphql、.gql 为 GraphQL,含导出类型变更的 *.go 为 Go 导出 API;未找到 API 文件时输出明确信息并停止。随后计算并打印 git merge-base HEAD main,对范围内每个文件用 git diff <merge-base> -- <file> 与基线对比。Protobuf 可用 buf breaking --against .git#ref=<merge-base>,否则手工检查字段号复用、字段删除、类型变更、新增必填字段等;OpenAPI 可用 oasdiff breaking <base-file> <current-file>,否则手工检查端点删除、HTTP 方法变更、参数删除、新增必填参数、响应模式收窄等;GraphQL 与 Go 导出 API 采用手工检查。输出先给汇总行(变更总数、破坏性数量),再给出兼容性报告表,列为 Change、File:Line、Type、Severity,严重级别为 BREAKING、WARN、SAFE,其中技术上非破坏但可能影响客户端的变更标为 WARN。
限制:仅做只读分析,不创建、修改或删除文件;无专用工具时准确性下降,需人工复核;资料未提供价格、平台支持范围及更多使用限制。