Echo项目用golangci-lint无特殊门槛,但必须在含go.mod的根目录运行;需配置.golangci.yml启用govet/errcheck/staticcheck,跳过vendor/testdata,并确保go mod init已执行。

刚装好golangci-lint却不知道从哪条命令开始检查代码?直接运行golangci-lint run会报错、卡住或漏检,因为默认行为依赖项目结构和配置文件存在状态。
确认当前目录是Go模块根目录
执行go list -m,输出应为类似example.com/myproject的模块路径。如果提示go: not in a module,说明不在合法Go模块内——【必须先在项目根目录执行go mod init example.com/myproject】,否则后续所有run操作都可能跳过全部文件。
这一步不能跳过。golangci-lint默认只扫描当前模块下的.go文件,不识别vendor/或src/子目录结构。
最简无配置运行(仅限临时验证)
方法一:强制扫描当前目录所有.go文件
运行golangci-lint run --no-config --skip-dirs=vendor ./...。
注意./...不是省略号,是字面量,表示递归扫描当前目录及子目录下所有Go包。
立即学习“go语言免费学习笔记(深入)”;
方法二:指定单个文件快速试错
运行golangci-lint run main.go,适合刚写完一个文件想立刻看报错。
⚠️ 提示:这两种方式都不读取任何.golangci.yml,完全依赖内置默认规则集,结果与正式配置运行差异极大。
启用基础配置并首次运行
第一步:在项目根目录创建.golangci.yml
用文本编辑器新建文件,粘贴以下最小可行配置:
linters:<br> enable:<br> - govet<br> - errcheck<br> - staticcheck<br>run:<br> timeout: 2m<br> skip-dirs:<br> - vendor<br> - testdata
第二步:保存后立即执行golangci-lint run
它会自动向上查找.golangci.yml,加载启用的三个核心linter,并跳过vendor和testdata目录。
第三步:观察输出格式
默认以彩色行号显示问题,每行包含文件名、行号、列号、linter名称和问题描述。若无输出,说明当前代码通过了这三项检查——但这不等于没有问题,只是未启用其他linter。
第四步:尝试修复可自动修正的问题
运行golangci-lint run --fix,仅对支持自动修复的linter(如gofmt、goimports)生效。注意:【--fix不会修改你未启用的linter对应的问题】,比如配置里没开gofmt,加了--fix也无效。


















