[英]who's using my Go package
我的情况是我们正在开发许多小项目,其中一些项目彼此依赖。 我们正在尝试根据依赖关系提供一些自动化测试。 例如,当更改包时,请确保所有依赖包都通过他们自己的单元测试。
所以问题是,在Go中,是否有一种方法/工具可以列出哪些包(本地工作空间)指的是给定的包?
go
工具本身包含对此的支持。 问题: 如何列出已安装的go包
您可以使用
go list -f "{{.ImportPath}} {{.Imports}}" ./...
列出包及其依赖项(包导入的包)。 在Go工作区的src
文件夹中执行它。 要么
go list -f "{{.ImportPath}} {{.Deps}}" ./...
其中递归地列出了包及其依赖项。
是的,这不是您想要的方向,因为您需要导入特定包的包。 但您可以轻松地在上述命令的输出中搜索您的包名称。 将您的包列为依赖项的行是您要查找的行; 这些行的第一个“标记”将是导入包的包(带有工作空间src
文件夹的路径)。
在Unix系统上,您可以使用|grep
来过滤这些行,例如
go list -f "{{.ImportPath}} {{.Imports}}" ./... |grep yourpackage
(这也将列出包含您的包及其依赖项的行。)
例:
假设您有2个包: my/pack1
和my/pack2
,其中my/pack1
导入任何内容,而my/pack2
导入fmt
和my/pack1
,上述命令的输出将包括:
path/to/workspace/src/my/pack1
path/to/workspace/src/my/pack2 [fmt my/pack1]
你正在寻找导入my/pack1
软件包:你可以看到my/pack2
导入它,因为my/pack1
被列为my/pack1
的依赖my/pack2
还有一个开源项目就是这样做: https : //github.com/cespare/deplist
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.