在 Go 语言项目中,使用 staticcheck
查找未引用的函数是一种高效的静态分析方法。
1. 安装 staticcheck
确保已安装 Go(版本 1.16+),然后执行以下命令安装 staticcheck
:
go install honnef.co/go/tools/cmd/staticcheck@latest
2. 基本用法:查找未引用的函数
在项目根目录下执行:
staticcheck ./...
关键检查规则:
- U1000:检测未使用的函数、方法、变量或类型。
- U1001:检测未使用的参数。
3. 过滤特定检查规则
若只需检查未使用的函数,可指定规则:
staticcheck -checks=U1000 ./...
4. 输出格式
默认输出格式为 {path}:{line}:{column}: {message}
,例如:
main.go:10:2: func UnusedFunction is unused (U1000)
5. 配置文件(可选)
在项目根目录创建 .staticcheck.conf
文件,自定义检查规则:
{
"checks": ["U1000", "-ST1000"] // 启用 U1000,禁用 ST1000(字符串格式化规则)
}
6. 集成到 VS Code
-
安装 Go 扩展。
-
在
settings.json
中添加:{ "go.lintTool": "staticcheck", "go.lintFlags": ["-checks=U1000"] }
7. 忽略特定代码
在函数上方添加注释 //lint:ignore U1000 reason
可忽略检查:
//lint:ignore U1000 Used by generated code
func UnusedButNeeded() {}
常见问题解答
-
Q:如何处理测试文件中的未使用函数?
A:
staticcheck
默认会检查测试文件。若需排除,可使用-tests=false
标志。 -
Q:如何在 CI/CD 中集成?
A:在 GitHub Actions 中添加:- name: Run staticcheck run: staticcheck -checks=U1000 ./...
示例输出
$ staticcheck -checks=U1000 ./...
internal/utils/helper.go:15:2: func privateHelper is unused (U1000)
cmd/server/main.go:23:2: func initConfig is unused (U1000)
通过 staticcheck
的 U1000
规则,你可以快速定位并清理未引用的函数,提高代码质量。