[英]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.