happytails.ai
简体中文

Protobuf 兼容性检查器

比较 .proto 文件的两个版本,找出会破坏已按 wire 格式或 JSON 格式写入的消息的编辑。会逐项说明删除编号、类型变更、字段重命名和枚举变更。

每个 .proto 文件最多 1,000,000 个字符,最多 200,000 个令牌、2,000 个消息和枚举、每条消息 10,000 个字段,以及 32 层嵌套消息。比较在浏览器后台工作线程中运行。可下载 JSON 报告和发现项 CSV 列表。 现有数据写入时所用的版本。请将更改后的文件放入 New schema。 最多 1,000,000 个字符。 运行前请检查设置。

处理结果

报告问题或分享想法。

Protobuf 兼容性检查器
  1. 在主输入框中粘贴旧版 .proto 文件。
  2. 将新版本粘贴到 New schema 字段。
  3. 运行检查并按严重程度从高到低查看发现项。
  4. 下载 JSON 报告或 CSV 列表。

使用须知

每个 .proto 文件最多 1,000,000 个字符,最多 200,000 个令牌、2,000 个消息和枚举、每条消息 10,000 个字段,以及 32 层嵌套消息。比较在浏览器后台工作线程中运行。可下载 JSON 报告和发现项 CSV 列表。

严重程度

破坏性变更表示新旧程序可能会误读二进制消息:例如删除字段但未保留其编号、重新使用保留范围内的编号、改变 wire 编码的类型、在单值与重复值之间切换、删除消息或枚举,或更改枚举值编号。破坏性 JSON 变更表示二进制数据仍可用,但 JSON 或文本格式发生变化,例如字段或枚举值重命名。警告涉及 wire 层仍可用、但可能截断或重新解释值的变更,例如 int32 改为 int64,或字段移入、移出 oneof。

比较方式

按照 protobuf 语言指南中的消息类型更新规则,消息和枚举按不含 package 的名称匹配,字段按编号匹配。也会比较嵌套在其他消息中的消息和枚举。

不支持的内容

解析器可读取 proto2 和 proto3 文件中的消息、枚举、oneof、maps、嵌套类型、保留编号和名称,以及字段选项。Imports 会列出但不会解析,因此其他文件中的类型只按名称比较。Editions、groups 和 extensions 会被拒绝。Services 会跳过。

接下来可以做什么