go - 在 Golang monorepo 中查找死代码

标签 go refactoring

我的团队将我们所有的 Golang 代码都放在一个 monorepo 中。

  • 包含库代码的各种包子目录。
  • cmd 下的二进制文件/服务/工具

我们已经有一段时间了,正在做一些清理工作。是否有任何工具或技术可以找到 cmd 下的二进制文件未使用的函数?

我知道 go vet 可以找到包中未使用的私有(private)函数。但是我怀疑我们也有未使用的导出库函数。

最佳答案

UPD 2020:未使用 工具已合并到 staticcheck 中。 不幸的是,v0.0.1-2020.1.4 可能是最后一个支持这个的 特征。多米尼克explains那是因为支票消耗了很多 资源,很难做到正确。

获取该版本:

env GO111MODULE=on go get honnef.co/go/tools/cmd/staticcheck@v0.0.1-2020.1.4

使用方法:

$ staticcheck --unused.whole-program=true -- ./...
./internal/pkg/a.go:5:6: type A is unused (U1001)

下面是原始答案。


Dominik Honnef 的 unused工具可能就是您要找的:

Optionally via the -exported flag, unused can analyse all arguments as a single program and report unused exported identifiers. This can be useful for checking "internal" packages, or large software projects that do not export an API to the public, but use exported methods between components.

关于go - 在 Golang monorepo 中查找死代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39924136/

相关文章:

go - 如何列出和复制非字母数字字符的 s3 key ?

google-app-engine - go -mux,为什么路由没有解析?

visual-studio-2008 - 一次在多个属性上使用 "convert to auto property"

visual-studio - Visual Studio 重构 : Remove method

sql - 有没有一个重构 SQL 的工具,有点像 ReSharper for SQL

java - 设计问题: How can I refactor a validation check into another method

go - 为什么我必须使用 core.CreateIntVarFromTo 才能让这个数独解算器工作?

bash - Istanbul-tools 安装错误 : github. com/ethereum/go-ethereum/crypto/bn256/cloudflare.gfpMul : relocation target runtime. support_bmi2 not defined

Godoc 文档不输出列表

php - 重构的成本是否超过重写的成本?