Go 项目查找所有没有引用的函数

在 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

  1. 安装 Go 扩展

  2. 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)

通过 staticcheckU1000 规则,你可以快速定位并清理未引用的函数,提高代码质量。

Licensed under CC BY-NC-SA 4.0
最后更新于 2025年07月28日 00:01
金融IT程序员的瞎折腾、日常生活的碎碎念
使用 Hugo 构建
主题 StackJimmy 设计