goland不内置漏洞扫描,需手动安装govulncheck(go install golang.org/x/vuln/cmd/govulncheck@latest)并配置路径,且必须加-test参数才能覆盖测试引入的间接依赖,否则漏报严重。

GoLand 本身不内置依赖漏洞扫描能力,它依赖 CLI 工具(如 govulncheck 或 trivy)在后台执行,并把结果渲染进 IDE 窗口。只配 GoLand 的 UI 设置,不装、不调用、不验证这些工具,等于没扫。
必须手动安装并配置 govulncheck 才能触发扫描
GoLand 的 “Vulnerability Scan” 功能开关(Settings → Languages & Frameworks → Go → Vulnerability Scan)只是个启动器,它不会自动帮你装 govulncheck。你得先在终端里运行:
go install golang.org/x/vuln/cmd/govulncheck@latest
然后回到 GoLand,在设置里填对路径(默认是 $GOPATH/bin/govulncheck)。常见错误包括:
- 路径填错或权限不足,导致点击 “Run Scan” 后无任何输出、也无报错
- 没加
-test参数——GoLand GUI 默认不传这个,所以它只扫业务代码,漏掉测试引入的golang.org/x/crypto等高危包 - 项目根目录下没
go.mod,或当前文件不在 module 路径内,govulncheck直接静默退出
trivy 需要显式指定 fs 模式,且依赖 go.sum 已提交
GoLand 不原生支持 trivy,但你可以把它配成 External Tool(Settings → Tools → External Tools),命令设为:
GoLand 2026.1.1 是 2026.1 发布后的首个维护修正版本,适合已经开始体验 2026.1 新功能并希望同步补丁的开发者。它更适合用于入门项目、现有项目迁移测试和 IDE 行为验证。
trivy fs --security-checks vuln --severity HIGH,CRITICAL --format template --template "@./.trivy.tpl" -o ./trivy-report.html .
关键点:
- 必须用
fs模式,不能用repo或dir——后者跳过go.sum校验,退化为模糊匹配 -
go.sum必须已提交 Git,否则trivy会 fallback 到模块名+版本查 CVE,漏报率陡增 - 若项目含
replace或私有 fork,需升级到trivy v0.45+,旧版无法解析// indirect和替换路径
扫描结果不是“没报错=安全”,而是“报了才开始看”
GoLand 里点一次扫描,弹出 “No vulnerabilities found”,很多人就关掉窗口。这恰恰是最危险的信号:
-
govulncheck的no vulnerabilities found只代表当前调用图没触发已知漏洞模式,不代表golang.org/x/net里某个未被 import 的子包没风险 - GO-XXXX-XXX 编号要去 vuln.go.dev 查,不是 NVD;拿它搜 CVE 会返回空
- 真正该盯的是
go list -m all | grep golang.org/x输出的每一行——尤其golang.org/x/text和golang.org/x/net,它们被标准库大量间接引用,但govulncheck的静态分析未必覆盖全部子功能路径
最常被忽略的其实是 go.mod 里没写、但构建时仍会被拉下来的 test-only 依赖:它们不出现在 govulncheck ./ 结果里,却真实存在于 go.sum 中,且 CI 会下载、proxy 可能污染。盯包这事,工具扫完,人得跟上。










