Golang 視覺化工具之go-callvis
小知識,大挑戰!本文正在參與「程式設計師必備小知識」創作活動。
本文已參與 「掘力星計劃」 ,贏取創作大禮包,挑戰創作激勵金。
一 背景
日常我們會看一些開源專案,或者想看自己寫的程式碼視覺化,在golang中可以利用工具實現,go-callvis是以圖片的形式展示了go程式的呼叫關係,在看複雜專案時尤其有用。
二 go-callvies 簡介
2.1 工具簡介
Go-callvis 是一個開發工具,用於幫助使用互動式檢視視覺化 Go 程式的呼叫圖。
此工具的目的是為開發人員提供一個視覺化的 Go 程式概覽,使用來自呼叫圖的資料及其與包和型別的關係。這在大型專案中特別有用,因為這些專案的程式碼複雜度要高得多,或者只是簡單地試圖理解其他人的程式碼。
2.2 特性
- 支援go mod
- 程式中的特定焦點包
- 點選軟體包,使用互動式檢視器快速切換焦點
- 按型別按包和/或方法分組函式
- 過濾器包到特定的匯入路徑字首
- 忽略標準庫中的函式
- 省略各種型別的函式呼叫
三 安裝
- go get安裝
shell
$ go get -u github.com/ofabry/go-callvis
- 原始碼編譯安裝
shell
$ git clone http://github.com/ofabry/go-callvis.git cd go-callvis && make install
四 輸出示例
它執行指標分析來構造程式的呼叫圖,並使用資料生成點格式的輸出,可以使用 Graphviz 工具進行渲染。
五 安裝
```shell go get -u github.com/ofabry/go-callvis
or
git clone http://github.com/ofabry/go-callvis.git cd go-callvis && make install ```
六 使用
go-callvis [可選引數] <包路徑>
1)使用瀏覽器互動展示
預設情況下,HTTP伺服器在http://localhost:7878/上偵聽,請使用選項-http="ADDR:PORT"
更改HTTP伺服器地址。
2)靜態輸出
要生成單個輸出檔案,使用選項-file=<file path>
選擇輸出檔案目標。
輸出格式預設為svg,使用選項-format=<svg|png|jpg|…>
選擇其他輸出格式。
3)其他引數
``` -debug 輸出詳細日誌 -file string 以檔案新式輸出結果,並將忽略server互動模式 -focus string Focus specific package using name or import path. (default "main") -format string 輸出檔案的格式 [svg | png | jpg | ...] (預設 "svg") -graphviz 使用Graphviz渲染影象 -group string 分組功能,根據包 與/或 型別分組 [pkg, type] (用逗號分開) (預設 "pkg"),例如 -group pkg,type -http string HTTP 服務地址 (預設 ":7878") -ignore string 忽略包含給定字首的包路徑(用逗號分開) -include string 包含具有給定字首的包路徑 (用逗號分開) -limit string Limit package paths to given prefixes (separated by comma) -minlen uint Minimum edge length (for wider output). (default 2) -nodesep float Minimum space between two adjacent nodes in the same rank (for taller output). (default 0.35) -nointer 忽略對未匯出函式的呼叫。 -nostd 忽略標準庫的呼叫 -skipbrowser 跳過開啟瀏覽器 -tags build tags a list of build tags to consider satisfied during the build. For more information about build tags, see the description of build constraints in the documentation for the go/build package -tests 包含測試程式碼 -version 顯示版本號
1)解析main包 go-callvis -skipbrowser -nostd ./
2)解析testPkg包 go-callvis -group pkg,type -focus testPkg github.com/專案具體路徑 ```
簡單示例
```shell $ go-callvis -format png -group pkg,type -focus github.com/kaliarch/linux_agent /cmd/app github.com/kaliarch/linux_agent 2021/08/18 11:22:12 http serving at http://localhost:7878 2021/08/18 11:22:21 converting dot to png.. 2021/08/18 11:22:22 serving file: /var/folders/wn/367g1v9n1bv0sg1k8qldzym80000gn/T/go-callvis_export.png
```
參考連結
- http://github.com/TrueFurby/go-callvis
- 雲原生架構之配置中心-總述
- 雲原生架構之Spring Cloud Kubernetes配置中心方案
- 雲原生架構之SpringCloudKubernetes 服務註冊發現方案(東西流量)
- 雲原生架構之服務發現與註冊-Kubernetes中服務註冊發現
- 雲原生架構之Springboot Gateway K8s 服務註冊發現方案(南北流量)
- 雲原生架構之SpringBoot K8s service服務註冊發現方案(東西流量)
- 雲原生架構之服務發現與註冊-總述
- 雲原生備份恢復工具Velero二開實戰
- Kubernetes安全之KubeEye
- Terraform 整合Ansible 實戰(remote)
- Terraform Gitlab CI簡單整合方案
- 實戰Kubernetes Gitlab CI
- Kubernetes叢集中流量暴露的幾種方案
- Kubectl外掛開發及開源釋出分享
- Client-go原始碼分析之SharedInformer及實戰
- TAPD 整合 GitLab
- Gin框架優雅關機和重啟
- Gin Swagger快速生成API文件
- Golang 視覺化工具之go-callvis
- 跨平臺資料備份工具之restic詳解