go-callvis是相對 以圖片的形式展現了go程序的調用關係,這個工具在看複雜項目時尤爲有用。git
親測,藉助它看祖傳golang代碼,頭痛好多了。github
go get -u github.com/TrueFurby/go-callvis
# or
git clone https://github.com/TrueFurby/go-callvis.git
cd go-callvis && make install
複製代碼
運行依賴golang
項目地址:https://github.com/TrueFurby/go-callvisdocker
命令特別簡單,只須要簡單的輸入:小程序
go-callvis [OPTIONS] <main package>
複製代碼
這裏 main package 是包含代碼的main函數所在的包,好比項目 github.com/gusibi/onep…設計模式
目錄結構爲:瀏覽器
.
├── README.md
└── src
├── dbs
├── go.mod
├── go.sum
├── idg
│ ├── area_code.go
│ ├── idg.go
│ ├── idg_test.go
│ ├── index.go
│ ├── index_test.go
│ ├── sort.go
│ ├── sort_test.go
│ ├── wr.go
│ └── wr_test.go
├── main.go
└── sorteDB
複製代碼
其中src目錄是一個go package,運行go-callvis 時就須要先cd src/,而後再執行命令:併發
go-callvis -group pkg,type md52id
複製代碼
md52id 是package name,已在go.mod中聲明,pakage name是一個必需要帶的參數。框架
運行命令,默認會打開瀏覽器加載地址http://localhost:7878svg
圖片格式爲 svg,也能夠添加 -format=png,指定以png形式展現
推薦使用svg,svg格式的內容是可交互的,好比這裏想查看gin包的內容就能夠點擊 對應的模塊來看詳情。
結果若是所示,圖像展現的結果就是這個包全部的調用關係,按包的調用層級由左向右排列。第二列上邊是 gin 框架的代碼,若是看代碼時不想看這部分,可使用 ignore 參數排除掉。
命令爲:
go-callvis -group pkg,type -ignore github.com/gin-gonic/gin md52id
複製代碼
這裏 gin 包的名字是 github.com/gin-gonic/gin而不是 gin
若是要再排出idg 包,能夠直接加在gin 包後邊,用,(英文逗號)隔開。
使用limit 命令能夠獲得相同的結果
go-callvis -group pkg,type -limit md52id md52id
獲得的結果爲:
若是想看idg包內部的調用關係,可使用 focus 命令,指定idg 包,命令以下:
go-callvis -focus=md52id/idg -group pkg,type -limit md52id md52id
複製代碼
結果如圖:
詳細命令能夠參考:github.com/TrueFurby/g…
使用go-callvis ,直觀的展現代碼的調用關係,對於大項目的源碼尤爲有用,好比下圖是gin stagic 包的調用關係:
經過圖能夠直觀的看到,
go-callvis 也能夠用來評估系統設計是否合理,代碼是否清晰,下圖是docker 的調用圖:
能夠看到,代碼結構很是清晰,調用鏈也比較簡單,項目成功果真每一環都作的很是完美。
如下是shopee內推廣告,「深圳、新加坡、上海」的職位都有,感興趣的能夠留言或者識別二維碼直接投遞。
最後,感謝女友支持和包容,比❤️
也能夠在公號輸入如下關鍵字獲取歷史文章:公號&小程序
| 設計模式
| 併發&協程
[1]
go-callvis: github.com/TrueFurby/g…
[2]
Go: golang.org/dl/
[3]
Graphviz:www.graphviz.org/download/: www.graphviz.org/download/