golangci-lint 支持按路径或包名精准检查:指定目录如internal/api仅检查该层,加/...则递归;可混合目录、文件及包路径,但须同属一个模块。

你想只检查项目中某个特定子目录下的 Go 代码,而不是整个项目,避免耗时过长或干扰无关文件。
用 golangci-lint run 指定单个目录
在项目根目录下执行:golangci-lint run internal/api。
这会检查 internal/api 目录下所有 .go 文件,但【不会递归进入其子目录】,比如 internal/api/v1 不会被包含。
如果该目录下没有 go.mod 或无法识别为合法包路径,命令会直接报错退出。
立即学习“go语言免费学习笔记(深入)”;
递归检查子目录(含所有嵌套)
方法一:在目录路径后加 /... 后缀
运行:golangci-lint run internal/api/...。
这一步会递归扫描 internal/api 及其所有子目录,只要路径下存在 .go 文件且能被 Go 工具链识别为有效包即可参与检查。
注意:若子目录中存在 go:build ignore 或空包声明(如 package main 但无 main() 函数),仍会被纳入检查范围,只是部分 linter 可能跳过语义分析。
指定多个独立目录或文件混合检查
第一步:列出目标路径,用空格分隔
第二步:执行命令 → golangci-lint run cmd/server/... internal/handler service.go
第三步:确认输出中包含这三个来源的检查结果行
其中 cmd/server/... 和 internal/handler 是目录(前者递归、后者不递归),service.go 是单个文件;【三者必须位于同一模块内,否则 golangci-lint 会因模块边界问题报错】。
这一步操作起来很简单,直接把路径拼好敲回车就行。
按 Go 包名而非路径指定检查范围
方法1:使用标准 Go 包导入路径语法
运行:golangci-lint run github.com/yourorg/yourrepo/internal/api。
前提是你已将当前项目 go mod init 初始化,并且该包路径在 go list 中可解析。golangci-lint 会自动映射到本地对应目录。
方法2:混合使用相对路径与包路径
例如:golangci-lint run ./internal/api github.com/yourorg/yourrepo/cmd/server。
只要任一路径能被 Go 工具链定位,其余路径也会按相同模块上下文解析。如果模块未初始化或 GOPROXY 配置异常,会导致包路径解析失败并中断执行。


















