golangci-lint 2.15.0 版本对 exhaustive 检查器做了一系列配置调整,部分旧选项已被标记弃用,现有配置需要对照新的定义逐一核对。官网 2026 年 10 月 16 日的变更记录显示,该检查器直接从 0.13.0 升级到 0.15.0,除了部分选项被替换,输出的报告提示文本也有改动。所有依赖枚举分支完整性校验的项目,升级之后需要把配置含义、输出内容的差异全部核对一遍。

来源:Golangci-lint 官方变更记录
本次改动不只是新增几个检查项:旧版的 explicit-exhaustive-switch 和 explicit-exhaustive-map 两个选项直接合并成了新的 explicit-exhaustive;原来 check 字段里的 map 值也替换成了 mapliteral。另有两项忽略配置的格式,从单个字符串改成了切片形式:ignore-enum-members 被新的 ignore-constants 替代,ignore-enum-types 被新的 ignore-types 替代。官方同时说明,被替换的旧选项目前还没完全下线,部分逻辑仍可生效,只是已经正式标记为弃用,老配置能被工具正常读取,不代表它已经完全符合新的配置定义。
现在打开官方 exhaustive 配置页,就能看到 switch、mapliteral 和 typeswitch 三类检查对象,分别标注了默认分支、类型过滤和显式检查开关的规则。这个工具校验的是分支覆盖完整性,不能因为代码没有编译错误,就默认已经满足它的检查要求。之前代码库如果用到了自定义过滤表达式,升级的时候要对照新的选项类型确认过滤范围,不要直接把原有字符串值当成新列表的内容继续维护。
使用 uber-go/dig 在 Golang 中实现依赖注入——基于反射容器,提供 Provide/Invoke、dig.In/dig.Out 参数与结果对象,支持命名依赖等

来源:Golangci-lint 官方检查器设置文档
本次版本还调整了性能分类:2.15.0 把 exhaustive 划入了 slow 慢检查器分组。这个标签不代表所有项目跑它的耗时都会按固定比例上涨,官方日志也没给出统一的耗时增量数值,如果项目的流水线是按快慢类别筛选要运行的检查器,这个分类变动本身就是必须复核的条件。新的报告文案也可能影响到依赖固定提示文本做过滤、统计的外部脚本,实际会不会出现异常,取决于项目有没有用到相关配置和处理逻辑。
同版本还更新了 errcheck、gocognit、golines、loggercheck 等组件,修复了 revive 的环境变量加载问题、多个规则的运行稳定性问题,还有自定义版本哈希计入模块版本的相关bug。官方发布页可以用来核对发行版本信息和所有变更提交。做升级评估的时候,要把新增报错、旧配置弃用提示、原有代码本身的问题分开排查,发布日志没有承诺完全消除所有误报,也没给出适配所有代码库的统一性能结论。
golang免费学习笔记(深入):立即使用
在学习笔记中,你将探索golang的核心概念和高级技巧!










