簡體   English   中英

誰正在使用我的Go包

[英]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/pack1my/pack2 ,其中my/pack1導入任何內容,而my/pack2導入fmtmy/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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM