goland代码自动检查默认仅启用govet和errcheck,需手动配置三处关键项:显式启用golangci-lint并设为on-the-fly模式、.golangci.yml与go.mod同级且路径严格为.golangci.yml、ide启动工作目录必须为模块根目录,否则90%潜在问题不标红。

GoLand 的代码自动检查默认是半残废状态,不手动调三处关键配置,90% 的潜在问题根本不会标红。
golangci-lint 必须显式启用且路径对齐
GoLand 默认只跑 govet 和 errcheck,staticcheck、unused、revive 这些真正能揪出死循环、未使用变量、弃用函数调用(如 SA1019)的检查器全被关着——不是 IDE 不支持,是根本没开。
- 进
Settings > Go > Static analyzers,确认golangci-lint可执行路径正确(推荐用Download按钮装 v1.52.0+) - 勾选
Enable on-the-fly analysis,否则只在保存或手动触发时跑 - 必须勾选
Use config file,并在输入框填.golangci.yml(注意:不是golangci.yml或.golangci.yaml,也不能写./.golangci.yml) -
.golangci.yml文件必须和go.mod在同一目录下;monorepo 中子模块也要各自放一份
IDE 启动工作目录必须是模块根目录
GoLand 不会自动把项目根目录当工作目录。如果启动时工作目录不是 go.mod 所在位置,golangci-lint 就解析不出 module path,配置加载失败,所有检查静默失效。
GoLand 2026.1.1 是 2026.1 发布后的首个维护修正版本,适合已经开始体验 2026.1 新功能并希望同步补丁的开发者。它更适合用于入门项目、现有项目迁移测试和 IDE 行为验证。
- 常见表现:设置里明明填了
.golangci.yml,但保存后没任何红线提示 - 解决办法:用终端进入含
go.mod的目录,运行goland .启动 IDE - 或在
Help → Edit Custom Properties里加一行:idea.working.directory=. - 桌面图标/快捷方式启动容易错位,务必避免
检查严重性必须设为 Warning 或更高
很多规则(比如 staticcheck 的 SA1019、unused 的未使用变量)默认是 Info 级别,在编辑器里不标红、不弹灯泡,只在 Problems 工具窗口里安静躺着。
- 进
Settings > Tools > Go Linter > Configure severity - 把
staticcheck、govet、unused相关项全部设为Warning或Error - 特别注意:
deadcode默认不扫导出函数(func Exported()),要检测必须加-all参数;可在External Tools里自定义命令:deadcode -all $ProjectFileDir$
JavaScript/TypeScript 检查需单独配 ESLint
GoLand 对 JS/TS 的检查不依赖 golangci-lint,而是走 ESLint 集成,且默认不启用——即使插件已安装,也得手动指定配置文件路径。
- 确保
JavaScript and TypeScript插件已启用(Settings > Plugins) - 进
Settings > Languages & Frameworks > JavaScript > Code Quality Tools > ESLint - 选
Manual ESLint configuration,填入eslint.config.js(ESLint v9+ 推荐用eslint.config.mjs) - 若用 TS 写配置,需在
Additional ESLint options填--flag unstable_ts_config - Node.js 解释器必须已配置(
Settings > Languages & Frameworks > Node.js and NPM)
最常被忽略的一点:golangci-lint 默认 exit code 是 0,CI 里不加 --issues-exit-code=1 就等于没卡;本地开发若没开 on-the-fly,改完代码也不会立刻看到红线——它根本没在跑。










