首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何检测go项目的管道中不推荐的直接依赖项

如何检测go项目的管道中不推荐的直接依赖项
EN

Stack Overflow用户
提问于 2022-02-22 07:03:29
回答 1查看 292关注 0票数 2

我试图在go项目中检测直接弃用的依赖关系。为此,我创建了一个虚拟项目脱毛,它具有德普直接依赖关系。如go1.17发布说明中所述,在模块弃用注释部分下,应该可以使用go list -m -u获取不推荐的依赖项。但是,当我在我的项目中运行命令时,我得到:

代码语言:javascript
复制
$ go list -m -u 
github.com/zbindenren/deptest

我只使用以下命令看到反对意见警告:

代码语言:javascript
复制
$ go get ./...
go: module github.com/zbindenren/depricon is deprecated: This module is not maintained anymore.

或与:

代码语言:javascript
复制
$ go list -m -u all
github.com/zbindenren/deptest
github.com/zbindenren/depricon v0.0.1 (deprecated)

但是,使用第二个命令,我还可以得到所有的间接依赖关系。

我的问题是:这是一个go list -m -u没有显示不推荐的模块的bug吗?还有比运行go get ./...更好的方法来检查不推荐的模块吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-02-22 07:24:42

首先,当您运行没有模块参数的go list -m -u时,它只列出主模块(来源):

-m标志导致go list列出模块而不是包。..。如果没有指定参数,则列出主模块。

然后,Go 1.17的发布说明实际上指出:

go list -m -u打印所有依赖项的弃用(使用-f或-json显示完整消息)

因此,使用一个模块参数运行,该参数包含您不推荐的依赖项,并指定格式:

代码语言:javascript
复制
$ go list -m -u -f '{{.Path}} {{.Deprecated}}' all
github.com/zbindenren/deptest 
github.com/zbindenren/depricon This module is not maintained anymore.

如果希望仅将输出限制为直接依赖项,请使用模板技巧:

代码语言:javascript
复制
$ go list -m -u -f '{{if not .Indirect}}{{.Path}} {{.Deprecated}}{{end}}' all

或者等待这一提案的到来。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71217127

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档