goland 中“过滤不合规代码”实际指通过高亮、标记、折叠等方式视觉筛选不符合规范的代码(如 todo、fixme、未使用变量等),并非删除或修改代码;需结合 golangci-lint 等静态检查工具提供合规判断,goland 仅负责可视化结果。

GoLand 里“过滤不合规代码”实际指什么
GoLand 本身不提供“一键过滤掉不合规代码”的功能——它不会自动删代码、改逻辑或屏蔽行。所谓“过滤”,在 GoLand 场景下,实际是高亮、标记、折叠或跳过显示不符合规范的代码片段(如 TODO、FIXME、未使用的变量、风格警告),本质是视觉/导航层面的筛选,不是运行时或构建时的代码剔除。
用内置 TODO 过滤器快速定位待处理代码
最常用也最轻量的方式是利用 GoLand 的 TODO 工具窗口配合自定义过滤器:
- 默认已识别
// TODO、// FIXME、// XXX等标签,但仅限单行注释;多行注释中的 TODO 不会被捕获 - 打开
TODO工具窗口(Windows/Linux:Ctrl+Alt+0 S;macOS:Cmd+, → TODO) - 点击右上角
+添加新过滤器,名称填High Priority,模式勾选TODO和FIXME即可 - 注意:过滤器只作用于当前项目索引范围,若文件未被 GoLand 索引(比如放在
vendor/或generated/目录下),条目不会出现
结合 golangci-lint 实现真·代码合规性拦截
真正能判断“是否合规”的是静态检查工具,GoLand 只负责展示结果。必须接入 golangci-lint 才能覆盖命名、错误处理、冗余 import 等真实问题:
GoLand 2026.1.1 是 2026.1 发布后的首个维护修正版本,适合已经开始体验 2026.1 新功能并希望同步补丁的开发者。它更适合用于入门项目、现有项目迁移测试和 IDE 行为验证。
- 先确保已安装
golangci-lint并可通过命令行运行;GoLand 不会替你装 - 在
Settings → Tools → golangci-lint中启用,勾选Run golangci-lint automatically - 关键配置项:
Configuration file必须指向项目根目录下的.golangci.yml,否则只跑默认规则集 - 若看到大量误报(如
nilness报错但逻辑安全),不是 GoLand 问题,而是.golangci.yml中没禁用对应 linter 或没加issues.exclude-rules
为什么搜索“过滤不合规代码”容易走偏
很多人搜完直接去翻 GoLand 设置找“过滤开关”,结果徒劳——因为 GoLand 没有也不该有“删除非法 UTF-8 字节”或“剔除空 struct{} 字段”这类操作。真正的过滤发生在:
- 编译阶段(
go build对语法和类型报错) - 静态检查阶段(
golangci-lint run输出违规位置) - 运行时(
utf8.Valid()判断字节合法性,strings.HasSuffix()筛文件后缀)
GoLand 只是把它们的结果可视化出来。想“过滤”,得先让底层工具产出明确的是/否判断,否则界面再花哨也没数据源。










