「工具推薦」golang 代碼可視化工具 go-callvis

「工具推薦」go-callvis

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 包的調用關係:

經過圖能夠直觀的看到,

  1. static 調用了 staticFS,而staticFS 只使用了 HEAD和GET 方法。
  2. 全部的http method 最終都是經過調用handler來處理響應的。

go-callvis 的另類用法

go-callvis 也能夠用來評估系統設計是否合理,代碼是否清晰,下圖是docker 的調用圖:

原圖地址: http://media.gusibi.mobi/8vZ7...

能夠看到,代碼結構很是清晰,調用鏈也比較簡單,項目成功果真每一環都作的很是完美。

內推

如下是shopee內推廣告,「深圳、新加坡、上海」的職位都有,感興趣的能夠留言或者識別二維碼直接投遞。

最後,感謝女友支持和包容,比❤️

也能夠在公號輸入如下關鍵字獲取歷史文章:公號&小程序 | 設計模式 | 併發&協程

掃碼關注

References

[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/...

相關文章
相關標籤/搜索