我试图在go项目中检测直接弃用的依赖关系。为此,我创建了一个虚拟项目脱毛,它具有德普直接依赖关系。如go1.17发布说明中所述,在模块弃用注释部分下,应该可以使用go list -m -u获取不推荐的依赖项。但是,当我在我的项目中运行命令时,我得到:
$ go list -m -u
github.com/zbindenren/deptest我只使用以下命令看到反对意见警告:
$ go get ./...
go: module github.com/zbindenren/depricon is deprecated: This module is not maintained anymore.或与:
$ go list -m -u all
github.com/zbindenren/deptest
github.com/zbindenren/depricon v0.0.1 (deprecated)但是,使用第二个命令,我还可以得到所有的间接依赖关系。
我的问题是:这是一个go list -m -u没有显示不推荐的模块的bug吗?还有比运行go get ./...更好的方法来检查不推荐的模块吗?
发布于 2022-02-22 07:24:42
首先,当您运行没有模块参数的go list -m -u时,它只列出主模块(来源):
-m标志导致go list列出模块而不是包。..。如果没有指定参数,则列出主模块。
然后,Go 1.17的发布说明实际上指出:
go list -m -u打印所有依赖项的弃用(使用-f或-json显示完整消息)
因此,使用一个模块参数运行,该参数包含您不推荐的依赖项,并指定格式:
$ go list -m -u -f '{{.Path}} {{.Deprecated}}' all
github.com/zbindenren/deptest
github.com/zbindenren/depricon This module is not maintained anymore.如果希望仅将输出限制为直接依赖项,请使用模板技巧:
$ go list -m -u -f '{{if not .Indirect}}{{.Path}} {{.Deprecated}}{{end}}' all或者等待这一提案的到来。
https://stackoverflow.com/questions/71217127
复制相似问题