如何检测 go 项目管道中已弃用的直接依赖项
How to detect deprecated direct dependencies in a pipeline for a go project
我正在尝试检测 go 项目中直接弃用的依赖项。为此,我在 模块弃用评论 部分下创建了一个虚拟项目 deptest which has depricon direct dependency. As stated in go1.17 release notes,应该可以使用 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
不显示已弃用模块的错误吗?是否有比 运行ning go get ./...
更好的方法来检查已弃用的模块?
首先,当你 运行 go list -m -u
没有模块参数时,它只列出主模块 (source):
The -m flag causes go list to list modules instead of packages. [...] If no arguments are specified, the main module is listed.
然后,Go 1.17 的发行说明实际上指出:
go list -m -u
prints deprecations for all dependencies (use -f or -json to show the full message)
因此 运行 使用包含已弃用依赖项的模块参数,并指定格式:
$ 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
或者等待 this proposal 通过。
我正在尝试检测 go 项目中直接弃用的依赖项。为此,我在 模块弃用评论 部分下创建了一个虚拟项目 deptest which has depricon direct dependency. As stated in go1.17 release notes,应该可以使用 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
不显示已弃用模块的错误吗?是否有比 运行ning go get ./...
更好的方法来检查已弃用的模块?
首先,当你 运行 go list -m -u
没有模块参数时,它只列出主模块 (source):
The -m flag causes go list to list modules instead of packages. [...] If no arguments are specified, the main module is listed.
然后,Go 1.17 的发行说明实际上指出:
go list -m -u
prints deprecations for all dependencies (use -f or -json to show the full message)
因此 运行 使用包含已弃用依赖项的模块参数,并指定格式:
$ 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
或者等待 this proposal 通过。