Golang視覺化工具——go-callvis

土豆發表於2022-01-31

一、go-callvis介紹

Go-callvis是一種golang程式碼視覺化工具,用於幫助使用互動式檢視視覺化 Go 程式的呼叫圖。此工具的目的是為開發人員提供一個視覺化的 Go 程式概覽,使用來自呼叫圖的資料及其與包和型別的關係。這在大型專案中特別有用,因為這些專案的程式碼複雜度要高得多,或者只是簡單地試圖理解其他人的程式碼。

二、執行依賴

  • Go 1.13+
  • Graphviz (optional, required only with -graphviz flag)

三、安裝

go get -u github.com/ofabry/go-callvis

或者是

git clone https://github.com/ofabry/go-callvis.git
cd go-callvis
make install

安裝好的 go-callvis 可執行檔案會在$GOPATH/bin目錄下

四、使用方法

  • 執行go-callvis -h可以列出所有受支援的選項,如下
Usage of go-callvis:
  -debug
        Enable verbose log.
        輸出詳細日誌
  -file string
        output filename - omit to use server mode
        以檔案新式輸出結果,並將忽略server互動模式
  -cacheDir string
        Enable caching to avoid unnecessary re-rendering.
        啟用快取以避免不必要的重新渲染。
  -focus string
        Focus specific package using name or import path. (default "main")
        關注特定的程式包,預設為“main”包
  -format string
        output file format [svg | png | jpg | ...] (default "svg")
        輸出檔案的格式,[svg | png | jpg | ...],預設為svg
  -graphviz
        Use Graphviz's dot program to render images.
        使用Graphviz渲染影像
  -group string
        Grouping functions by packages and/or types [pkg, type] (separated by comma) (default "pkg")
        分組功能,根據包 與/或 型別分組 [pkg, type] (用逗號分開) (預設 "pkg"),例如 -group pkg,type
  -http string
        HTTP service address. (default ":7878")
        HTTP 服務地址 (預設 ":7878")
  -ignore string
        Ignore package paths containing given prefixes (separated by comma)
        忽略包含給定字首的包路徑(用逗號分開)
  -include string
        Include package paths with given prefixes (separated by comma)
        包含具有給定字首的包路徑 (用逗號分開)
  -limit string
        Limit package paths to given prefixes (separated by comma)
        將包路徑限制為給定的字首(以逗號分隔)
  -minlen uint
        Minimum edge length (for wider output). (default 2)
        最小邊長(用於更寬的輸出)。 (預設2)
  -nodesep float
        Minimum space between two adjacent nodes in the same rank (for taller output). (default 0.35)
        同一等級中兩個相鄰節點之間的最小間距(用於更高的輸出)。 (預設0.35)
  -nointer
        Omit calls to unexported functions.
        忽略對未匯出函式的呼叫。(忽略首字母小寫的函式)
  -nostd
        Omit calls to/from packages in standard library.
        忽略標準庫的呼叫
  -skipbrowser
        Skip opening browser.
        跳過開啟瀏覽器
  -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
        在構建期間更適合的構建標記
        有關構建標記的更多資訊,請參閱go / build軟體包的文件中的構建約束說明。
  -tests
        Include test code.
        包含測試程式碼
  -version
        Show version and exit.
        顯示版本號
  • 命令列格式:go-callvis [可選引數] <包路徑>
  • 預設情況下,輸出的圖在 http://localhost:7878/,可使用選項-http="ADDR:PORT"更改HTTP伺服器地址。
  • 靜態輸出:

    • 要生成單個輸出檔案,使用選項-file=<file path>選擇輸出檔案目標。
    • 輸出格式預設為svg,使用選項-format=<svg|png|jpg|...>選擇其他輸出格式。
  • 使用示例:

    • 解析main包 go-callvis -skipbrowser -nostd ./
    • 解析testPkg包 go-callvis -group pkg,type -focus testPkg github.com/專案具體路徑

五、效果圖說明

請新增圖片描述

  • 規範說明

參考

附:有不足、疏漏歡迎指出,我可以借鑑學習後補充。

相關文章