谁在使用我的 Go 包

我的场景是我们有很多小项目在开发中,其中一些相互依赖。我们正在尝试提供一些基于依赖关系的自动化测试。例如,当一个包被改变时,确保所有依赖的包通过它们自己的单元测试。

所以问题是,在 Go 中,是否有一种方法/工具可以列出哪些包(本地工作空间)指的是给定的包?


茅侃侃
浏览 122回答 1
1回答

尚方宝剑之说

对此的支持包含在go工具本身中。来自问题:如何列出已安装的 go 包您可以使用go list -f "{{.ImportPath}} {{.Imports}}" ./...列出包及其依赖项(包导入的包)。在srcGo 工作区的文件夹中执行它。或者go list -f "{{.ImportPath}} {{.Deps}}" ./...其中递归列出包及其依赖项。是的,这不是您想要的方向,因为您想要导入特定包的包。但是您可以轻松地在上述命令的输出中搜索您的包名称。您的包被列为依赖项的行就是您要查找的行;这些行的第一个“标记”将是src导入包的包(带有工作区文件夹的路径)。在 Unix 系统上,您可以使用|grep过滤这些行,例如go list -f "{{.ImportPath}} {{.Imports}}" ./... |grep yourpackage(这还将列出包含您的包及其依赖项的行。)例子:假设您有 2 个包:my/pack1and my/pack2,其中my/pack1什么都不导入,而my/pack2importfmt和my/pack1,上述命令的输出将包括:path/to/workspace/src/my/pack1path/to/workspace/src/my/pack2 [fmt my/pack1]并且您正在寻找导入的包my/pack1:您可以看到my/pack2导入它,因为它my/pack1被列为依赖项my/pack2还有一个开源项目就是这样做的:https : //github.com/cespare/deplist
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go