如何使用 Go Modules 识别依赖链

How to identify dependency chain using Go Modules

如何识别 go.sum 中存在但 go.mod 中不存在的模块的导入路径?我想知道 go.mod 中的哪个模块正在导入 go.sum 中列出的模块,以及它们之间的整个链。

我正在从我的一个模块和我自己的依赖项中删除一个已弃用的模块 logrus,并希望确保我自己的代码 none 仍然使用它,并且其他哪些代码确实使用了它。

Go 模块有一个 go.mod 和一个 go.sum 文件。在 go.sum 文件中,模块 github.com/sirupsen/logrus 出现,但在 go.mod 文件中没有出现。

当我通过删除 go.sum 和 运行 go test -v ./... 重新创建 go.sum 文件时,会使用 logrus 重新创建 go.sum 文件。

go.mod中没有直接或间接提及,如:

github.com/sirupsen/logrus v1.6.0 // indirect

go mod why returns 如下:

$ go mod why github.com/sirupsen/logrus
# github.com/sirupsen/logrus
(main module does not need package github.com/sirupsen/logrus)

go mod why -m returns 以下内容:

$ go mod why -m github.com/sirupsen/logrus
# github.com/sirupsen/logrus
(main module does not need module github.com/sirupsen/logrus)

如何找出 go.mod 中的哪个模块正在导入模块 logrus,该模块在 go.sum 中列出但未在 go.mod 中列出?

这是模块:

go mod why github.com/sirupsen/logrus
# or 
go mod graph | grep logrus