go-callvis是相對 以圖片的形式展現了go程序的調用關係,這個工具在看複雜項目時尤爲有用。git
親測,藉助它看祖傳golang代碼,頭痛好多了。
go get -u github.com/TrueFurby/go-callvis # or git clone https://github.com/TrueFurby/go-callvis.git cd go-callvis && make install
運行依賴github
項目地址:https://github.com/TrueFurby/go-callvisgolang
命令特別簡單,只須要簡單的輸入:docker
go-callvis [OPTIONS] <main package>
這裏 main package 是包含代碼的main函數所在的包,好比項目 https://github.com/gusibi/one...小程序
目錄結構爲:設計模式
. ├── 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:7878併發
圖片格式爲 svg,也能夠添加 -format=png,指定以png形式展現推薦使用svg,svg格式的內容是可交互的,好比這裏想查看gin包的內容就能夠點擊 對應的模塊來看詳情。框架
結果若是所示,圖像展現的結果就是這個包全部的調用關係,按包的調用層級由左向右排列。第二列上邊是 gin 框架的代碼,若是看代碼時不想看這部分,可使用 ignore 參數排除掉。svg
命令爲:
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
結果如圖:
詳細命令能夠參考:https://github.com/TrueFurby/...
使用go-callvis ,直觀的展現代碼的調用關係,對於大項目的源碼尤爲有用,好比下圖是gin stagic 包的調用關係:
經過圖能夠直觀的看到,
go-callvis 也能夠用來評估系統設計是否合理,代碼是否清晰,下圖是docker 的調用圖:
原圖地址: http://media.gusibi.mobi/8vZ7...
能夠看到,代碼結構很是清晰,調用鏈也比較簡單,項目成功果真每一環都作的很是完美。
如下是shopee內推廣告,「深圳、新加坡、上海」的職位都有,感興趣的能夠留言或者識別二維碼直接投遞。
最後,感謝女友支持和包容,比❤️
也能夠在公號輸入如下關鍵字獲取歷史文章:公號&小程序
| 設計模式
| 併發&協程
[1]
go-callvis: https://github.com/TrueFurby/...[2]
Go: https://golang.org/dl/[3]
Graphviz:http://www.graphviz.org/downl...: http://www.graphviz.org/downl...[4]
項目地址:https://github.com/TrueFurby/...: https://github.com/TrueFurby/...