<p>golangci-lint 支持按错误文本精准屏蔽:命令行用 --exclude "is deprecated" 临时排除,配置文件中在 issues.exclude-rules 下用正则 text: "sa1019: .* is deprecated" 持久化排除,二者均匹配错误信息字符串而非规则名。</p>

在使用 golangci-lint 进行代码检查时,若某类错误(如 “SA1019: xxx is deprecated”)已在业务上下文中被合理处理,需按错误文本精准屏蔽,而非整个 linter 或规则名。
通过 --exclude 参数临时排除单条错误文本
在命令行中运行 lint 时,直接用 --exclude 后接正则匹配的错误信息片段:
golangci-lint run --exclude "is deprecated"
该参数支持 Go 正则语法,会匹配所有包含 “is deprecated” 的报错行。注意:它只对本次执行生效,不修改配置文件。
在 .golangci.yml 中按 error message 排除
打开项目根目录下的 【.golangci.yml】 文件,在 issues 节点下添加 exclude-rules:
issues:
exclude-rules:
- text: "SA1019: .* is deprecated"
这里 text 字段是完整正则表达式,必须能覆盖整条错误输出中的 message 部分(不含文件路径和行号)。例如实际报错为:foo.go:42:3: SA1019: ioutil.ReadFile is deprecated,那么正则 SA1019: .* is deprecated 才能命中。
多个排除规则可并列写入 exclude-rules 列表,每条独立匹配。
区分 exclude 与 disable 的关键行为
方法一:用 //nolint:govet 注释禁用某行的特定 linter —— 它作用于代码位置,不关心错误文本。
方法二:用 --exclude 或 exclude-rules.text —— 它只匹配错误信息字符串,哪怕同一行触发了多个 linter,只要 message 符合就隐藏。
【一旦 text 正则写错(比如漏转义点号、未加 ^$ 锚定),可能完全不生效或误杀其他错误】
验证是否生效:先用 golangci-lint run -v 查看原始报错全文,复制完整的 message 片段,再粘贴进 exclude-rules.text 做字面匹配测试。
golang免费学习笔记(深入):立即使用
在学习笔记中,你将探索golang的核心概念和高级技巧!











