语义化版本破坏性变更检测器
勾选本次代码改动包含的变更点,按semver规则自动判定应发布MAJOR/MINOR/PATCH哪个版本等级。
免费在线工具
Loading…
使用说明
在左侧清单中勾选本次改动实际包含的变更点,清单按「破坏性变更(MAJOR)」「新增能力(MINOR)」「修复/无变化(PATCH)」三组分类展示。
点击「检测版本等级」后,工具会取所有勾选项中等级最高的一项作为最终建议(MAJOR > MINOR > PATCH),并列出命中的具体变更点及理由。
可点击「加载示例数据」快速体验一组典型的MINOR级改动(新增可选参数+新增导出+修复bug)。
功能介绍
本工具内置12个常见变更类型的判定规则,归纳自semver.org官方规范及主流开源项目的Changelog实践:
- MAJOR级:移除/重命名公开导出、新增必填参数、收紧参数类型、修改返回值结构、修改错误码含义
- MINOR级:新增可选参数、新增导出、新增枚举值、标记deprecated但保留功能
- PATCH级:内部bug修复、性能优化、仅改注释文档
工具只做规则化判定,不解析真实代码diff,最终发布版本号仍需人工确认。
使用场景
开源库发版前自查
维护开源npm包/Go模块时,发版前用清单过一遍本次PR的改动点,避免误把破坏性变更当成MINOR发出去。
内部SDK变更评审
团队内部维护的公共SDK/组件库,在Code Review阶段用此工具辅助判断PR的版本等级,统一发版流程的沟通语言。
常见问题
这个工具会自动分析我的代码diff吗?
不会。工具只是一份按semver规则整理的变更类型清单,需要你自己判断本次改动属于清单里的哪些类型并勾选,工具据此给出版本等级建议。
同时勾选了MAJOR和MINOR级的变更点,结果是什么?
按semver惯例取最高等级,只要包含任意一个MAJOR级变更点,最终建议就是MAJOR,不管同时还勾选了多少MINOR或PATCH级的项。
给枚举类型新增一个取值算破坏性变更吗?
一般不算破坏性变更,归为MINOR级,因为不影响现有取值的调用方;但如果调用方代码对枚举做了穷尽性switch匹配(没有default分支),新增取值可能导致遗漏处理,这点工具在对应条目的说明里有提示。