精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

一款好用的 Go 調用鏈可視化工具

開發 前端
go-callvis 工具將 Go 程序函數調用關系通過圖形可視化出來,它能幫助開發人員更好地梳理程序脈絡。且 go-callvis 的使用非常簡單,可以開箱即用。

在接手他人代碼或調研一些開源項目時,如果能夠理清其中的代碼調用鏈路,這將加速我們對實現的理解。

本文介紹一款工具 go-callvis,它能夠將 Go 代碼的調用關系可視化出來,并提供了可交互式的 web 服務。

go-callvis 使用

依賴

  • Go 1.17+
  • Graphviz (可選,當工具指定了 ??-graphviz?? 時需要)

工具安裝

go get -u github.com/ofabry/go-callvis
# or
git clone https://github.com/ofabry/go-callvis.git
cd go-callvis && make install

示例

package main

import (

func main() {
// Part 1: create a listener
l, err := net.Listen("tcp", ":8000")
if err != nil {
log.Fatalf("Error listener returned: %s", err)
}
defer l.Close()

for {
// Part 2: accept new connection
c, err := l.Accept()
if err != nil {
log.Fatalf("Error to accept new connection: %s", err)
}

// Part 3: create a goroutine that reads and write back data
go func() {
log.Printf("TCP session open")
defer c.Close()

for {
d := make([]byte, 1024)

// Read from TCP buffer
_, err := c.Read(d)
if err != nil {
log.Printf("Error reading TCP session: %s", err)
break
}
log.Printf("reading data from client: %s\n", string(d))

// write back data to TCP client
_, err = c.Write(d)
if err != nil {
log.Printf("Error writing TCP session: %s", err)
break
}
}
}()
}
}

以上是一個簡單的TCP服務端代碼,通過 go-callvis 工具,可將其代碼調用關系梳理出來。

$ go-callvis main.go
2022/08/14 21:23:03 http serving at http://localhost:7878
2022/08/14 21:23:03 converting dot to svg..
2022/08/14 21:23:03 serving file: /var/folders/xk/gn46n46d503dsztbc6_9qb2h0000gn/T/go-callvis_export.svg

go-callvis 默認將代碼調用關系存儲成 svg 格式的圖形,并會在 http://localhost:7878 服務上進行展示。

圖片

?瀏覽器界面上,如果點擊 log 單元,將會進入 log 模塊的代碼調用交互圖中。

圖片

使用參數

go-callvis 默認以 main 作為鏈路起點進行分析,因此 package 需要為 main 包。

go-callvis [flags] package

如果不想從 main 方法開始,那么需要使用 -tests 參數,并且在 yourpackage 下創建單元測試,在測試中調用你想要的起始點方法。

go-callvis -tests yourpackage

詳細使用說明可通過執行 go-callvis 命令查看

$ go-callvis
go-callvis: visualize call graph of a Go program.

Usage:

go-callvis [flags] package

Package should be main package, otherwise -tests flag must be used.

Flags:

-algo string
The algorithm used to construct the call graph. Possible values inlcude: "static", "cha", "rta", "pointer" (default "pointer")
-cacheDir string
Enable caching to avoid unnecessary re-rendering, you can force rendering by adding 'refresh=true' to the URL query or emptying the cache directory
-debug
Enable verbose log.
-file string
output filename - omit to use server mode
-focus string
Focus specific package using name or import path. (default "main")
-format string
output file format [svg | png | jpg | ...] (default "svg")
-graphviz
Use Graphviz's dot program to render images.
-group string
Grouping functions by packages and/or types [pkg, type] (separated by comma) (default "pkg")
-http string
HTTP service address. (default ":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)
-nodesep float
Minimum space between two adjacent nodes in the same rank (for taller output). (default 0.35)
-nodeshape string
graph node shape (see graphvis manpage for valid values) (default "box")
-nodestyle string
graph node style (see graphvis manpage for valid values) (default "filled,rounded")
-nointer
Omit calls to unexported functions.
-nostd
Omit calls to/from packages in standard library.
-rankdir string
Direction of graph layout [LR | RL | TB | BT] (default "LR")
-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
-tests
Include test code.
-version
Show version and exit.
[slp@slpdeMacBook-Pro:] ~/repo/MongoShake/cmd/collector $ go-callvis --help
Usage of go-callvis:
-algo string
The algorithm used to construct the call graph. Possible values inlcude: "static", "cha", "rta", "pointer" (default "pointer")
-cacheDir string
Enable caching to avoid unnecessary re-rendering, you can force rendering by adding 'refresh=true' to the URL query or emptying the cache directory
-debug
Enable verbose log.
-file string
output filename - omit to use server mode
-focus string
Focus specific package using name or import path. (default "main")
-format string
output file format [svg | png | jpg | ...] (default "svg")
-graphviz
Use Graphviz's dot program to render images.
-group string
Grouping functions by packages and/or types [pkg, type] (separated by comma) (default "pkg")
-http string
HTTP service address. (default ":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)
-nodesep float
Minimum space between two adjacent nodes in the same rank (for taller output). (default 0.35)
-nodeshape string
graph node shape (see graphvis manpage for valid values) (default "box")
-nodestyle string
graph node style (see graphvis manpage for valid values) (default "filled,rounded")
-nointer
Omit calls to unexported functions.
-nostd
Omit calls to/from packages in standard library.
-rankdir string
Direction of graph layout [LR | RL | TB | BT] (default "LR")
-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
-tests
Include test code.
-version
Show version and exit.

每個參數都有對應的說明,無需詳細介紹。

有幾個比較有用的參數可以注意:nostd?用以忽略標準庫的調用;group?用以對函數分類;include?、limit?、ignore參數則用以控制過濾或保留調用關系。

總結

go-callvis 工具將 Go 程序函數調用關系通過圖形可視化出來,它能幫助開發人員更好地梳理程序脈絡。且 go-callvis 的使用非常簡單,可以開箱即用。

之后同學們在接觸復雜項目時,不妨用 go-callvis 試試看。?

責任編輯:武曉燕 來源: Golang技術分享
相關推薦

2019-12-23 14:17:46

數據可視化工具

2022-07-12 09:35:59

JSON可視化工具

2020-03-24 09:50:33

工具代碼開發

2024-02-26 12:02:37

Python數據可視化D3blocks

2024-11-04 08:49:11

2024-02-19 00:00:00

Git可視化工具

2022-09-14 08:49:01

Kubernetes

2021-04-11 09:51:25

Redis可視化工具

2015-12-02 09:44:04

Python視化工具

2021-06-11 17:45:57

大數據可視化工具

2021-01-27 13:16:39

ScreenLinux命令

2021-02-16 10:58:50

ScreenLinux命令

2024-01-11 18:55:37

3D可視化AI

2021-04-14 16:20:39

可視化大數據工具

2022-05-24 15:03:44

開源工具可視化

2019-06-11 09:35:34

可視化工具圖形

2022-01-17 11:09:46

數據可視化工具開發

2023-03-08 07:45:50

可視化編程工具SpringBoot

2019-10-10 08:46:02

Docker可視化技術瀏覽器

2018-09-09 23:07:17

物聯網可視化編程工具
點贊
收藏

51CTO技術棧公眾號

成人在线视频成人| av女人的天堂| а√天堂在线官网| 亚洲精品社区| 精品亚洲一区二区| 热久久精品免费视频| 日本在线视频网| 蜜桃久久av| 日韩在线激情视频| 在线观看一区二区三区视频| 中文字幕乱码中文乱码51精品| 中文字幕av一区 二区| 成人欧美视频在线| 亚洲精品无码久久久久| 欧美热在线视频精品999| 激情成人在线视频| 国产日韩精品久久| 日本一级黄色录像| 欧美国产一级| 精品一区电影国产| 香蕉视频在线观看黄| 日日夜夜天天综合入口| 国产91精品一区二区麻豆网站| 美日韩精品视频免费看| 国产精品探花在线播放| av在线日韩| 亚洲夂夂婷婷色拍ww47| 国产精品一区二区免费看| xxxx 国产| 欧美调教网站| 欧美一区二区日韩| 亚洲一二三区av| 小草在线视频免费播放| 伊人开心综合网| 国内精品视频免费| 国产精品久久久久久人| 亚洲无线视频| 国产亚洲精品91在线| xfplay5566色资源网站| 欧美成人黑人| 欧美日韩中文字幕综合视频| 国产一级做a爰片久久毛片男| 99re在线视频| 日本一区二区三区dvd视频在线| 国产女主播一区二区三区| 亚洲不卡视频在线观看| 99综合视频| 色先锋资源久久综合5566| 深爱五月激情网| 国产麻豆一区二区三区| 欧美日韩在线观看一区二区| 日本一极黄色片| 午夜欧美巨大性欧美巨大| 欧美日韩国产在线看| 黄色一级视频在线播放| 岛国av免费在线观看| 亚洲成人av中文| 五月天久久狠狠| 色视频在线观看| 激情文学综合丁香| 成人写真福利网| www.国产com| 亚洲欧美日韩视频二区| 日韩美女在线播放| 真实国产乱子伦对白在线| 欧美有码视频| 自拍偷拍亚洲精品| 国产高潮视频在线观看| 动漫视频在线一区| 日韩欧美高清在线| 精品少妇人妻av一区二区三区| 精品亚洲a∨| 91精品国产综合久久久久| 波多野结衣中文字幕在线播放| 我爱我色成人网| 欧美综合在线视频| 国产福利精品一区二区三区| 欧美黑人巨大xxxxx| 在线观看三级视频欧美| 羞羞的视频在线| 久久av网站| 日韩av中文字幕在线| 下面一进一出好爽视频| 久久综合另类图片小说| 欧美一区二区三区免费大片| 一区二区在线免费观看视频| 欧美天堂影院| 日韩av在线免费观看| 精品成人av一区二区三区| 水蜜桃精品av一区二区| 久久成人这里只有精品| 日韩av手机在线免费观看| 欧美激情一区| 欧美日本中文字幕| 日韩av片在线播放| 亚洲国产免费| 久久久久久久久电影| 一级做a爰片久久毛片| 精品一区二区三区的国产在线播放| 99久热re在线精品996热视频| 欧美精品少妇| 亚洲精品国产视频| 国产系列第一页| 黄色av免费在线| 天天色综合成人网| 亚洲视频一二三四| 农村妇女一区二区| 欧美精品色综合| 亚洲男人天堂av在线| 欧美高清你懂的| 亚洲成人1234| 蜜桃视频最新网址| 亚洲一区二区日韩| 日本精品久久电影| 精品人妻一区二区三区蜜桃 | 国产欧美va欧美va香蕉在| 亚洲av永久纯肉无码精品动漫| 国产亚洲精品7777| 神马影院午夜我不卡| h网站视频在线观看| 亚洲国产精品99久久久久久久久| wwwwww欧美| 麻豆网站免费在线观看| 日韩欧美一区二区三区久久| 手机看片国产精品| 日韩美女国产精品| 亚洲人午夜色婷婷| 一区二区三区在线观看免费视频| 日韩免费看片| 国产成人精彩在线视频九色| 一级特黄录像免费看| 91免费观看国产| 国产美女主播在线| 精品国产亚洲一区二区三区大结局 | 国产精品久久久久婷婷二区次| 香蕉精品视频在线| 欧美videossex| 日韩一区二区三区三四区视频在线观看| 亚洲av熟女国产一区二区性色| 久久久久久久久久久妇女| 国产极品jizzhd欧美| 亚洲欧美日韩精品永久在线| 亚洲第一激情av| 少妇网站在线观看| 精品久久久中文字幕| 欧美中文字幕视频在线观看| 国产精品国产av| 国产精品久久久久一区| 亚洲另类第一页| 99精品视频精品精品视频| 国产精品美女主播| 男人天堂综合网| 亚洲国产精品高清| 亚洲精品无码国产| 成人动态视频| 久久精品电影网站| 中文字幕在线观看视频网站| 另类小说视频一区二区| 亚洲一区二区免费视频软件合集| 福利精品一区| 久久精品亚洲精品| 中文字幕黄色片| 欧美国产日韩一二三区| 一级片视频免费观看| 91一区在线| 99re国产视频| 色哟哟免费在线观看| 欧美午夜xxx| 99久久人妻无码精品系列| 亚洲性图久久| 亚洲iv一区二区三区| 福利视频在线播放| 欧美欧美欧美欧美| 99久久久无码国产精品衣服| 在线免费高清一区二区三区| 久久影院理伦片| jizz亚洲女人高潮大叫| 欧美成人精品影院| 国产精品久久777777换脸| 一区二区免费在线| 夜夜爽久久精品91| 亚洲乱码视频| 国产麻豆一区二区三区在线观看| 涩涩涩在线视频| 一区二区三区亚洲| a级片免费视频| 亚洲欧美色图小说| 中文字幕一区二区人妻电影丶| 久久看片网站| 日本一区视频在线播放| 伊人久久大香| 欧美一级视频免费在线观看| 久久精品视频免费看| 亚洲的天堂在线中文字幕| 久久久久久av无码免费看大片| 亚洲综合免费观看高清在线观看| 古装做爰无遮挡三级聊斋艳谭| 97久久视频| 国产日韩综合一区二区性色av| 97超碰人人在线| 精品国产一区二区在线观看| 亚洲GV成人无码久久精品| 亚洲男人都懂的| 久久出品必属精品| 日韩精品一级二级 | 亚洲美女黄色| 伊人情人网综合| 亚洲免费毛片| 国产精品27p| 调教视频免费在线观看| 亚洲精品xxxx| www.五月激情| 欧美精品123区| 麻豆亚洲av熟女国产一区二| 国产日产欧美一区二区三区| 中文字幕亚洲乱码| 亚洲国产老妈| 成人资源av| 中文字幕乱码中文乱码51精品| 欧美美女操人视频| 免费日本一区二区三区视频| 日韩欧美一级片| 亚洲天堂中文字幕在线| 亚洲精品久久久久久国产精华液| 欧美日韩中文字幕视频| 久久午夜色播影院免费高清| 精品视频无码一区二区三区| 亚洲福利免费| 亚洲精品自在在线观看| 免费电影一区二区三区| 国产精品网红直播| 日韩在线影院| 欧美高清电影在线看| 视频一区二区三区在线看免费看| 在线观看亚洲专区| 成年人av网站| 亚洲欧美日本韩国| 中文字幕求饶的少妇| 成人av资源站| 逼特逼视频在线观看| 国产精品77777| 欧美一级大片免费看| 久久精品九九| 欧美私人情侣网站| 美女诱惑黄网站一区| 日韩亚洲欧美一区二区| 香港欧美日韩三级黄色一级电影网站| 亚洲精品视频一二三| 日韩激情免费| 久久久久久久久一区| 欧美爱爱网站| 就去色蜜桃综合| 免费看av成人| 色播五月综合| 欧美超碰在线| 日本欧美精品久久久| 欧美男gay| 日韩电影在线播放| 久久国产影院| 日韩高清av电影| 成人在线电影在线观看视频| 一级做a爰片久久| 国产中文字幕一区二区三区| 国产精品久久久久久免费观看 | 日韩激情视频在线| 国产精品女人久久久| 日韩女优制服丝袜电影| 欧日韩在线视频| 亚洲欧美中文另类| 欧美一级在线免费观看| 亚洲国产中文字幕久久网 | 久久久91精品国产一区二区三区| 亚洲av无码一区二区三区人 | 久久精品在线观看| 在线看黄色的网站| 狠狠色丁香九九婷婷综合五月| 亚洲国产日韩在线一区| 99精品视频在线观看| 少妇性l交大片7724com| eeuss鲁片一区二区三区在线观看 eeuss影院一区二区三区 | 欧美久久久久免费| 精品久久久无码中文字幕| 日韩av有码在线| 四虎精品在线| 亚洲精品www久久久| 免费国产精品视频| 亚洲丝袜一区在线| 精品国产丝袜高跟鞋| 久久精品视频亚洲| 九色porny在线| 98精品国产自产在线观看| 超级白嫩亚洲国产第一| 国产不卡av在线免费观看| 免费观看亚洲| 日韩av免费在线| 亚洲成人偷拍| 日本精品二区| 在线精品一区| 中文字幕亚洲影院| 97精品久久久午夜一区二区三区 | 亚洲一区二区在线观看视频| 中文字幕精品视频在线观看| 日韩一区二区电影在线| 国产三级视频在线看| 久久青草福利网站| www.欧美| 97久久天天综合色天天综合色hd | 成人午夜又粗又硬又大| 永久免费毛片在线观看| 岛国av一区二区在线在线观看| 国产男男gay体育生网站| 日韩欧美激情在线| 欧洲av在线播放| 久久艳片www.17c.com| 欧美电影h版| 精品综合久久久| 中文精品久久| 欧美日韩中文不卡| 久久久99精品免费观看| aaa人片在线| 欧美主播一区二区三区美女| 一本到在线视频| 亚洲欧美www| 老牛影视精品| 国产传媒欧美日韩| 国产精品免费大片| 亚洲熟妇国产熟妇肥婆| 国产91在线看| 中文字幕第28页| 精品人在线二区三区| 老司机福利在线视频| 国产精品亚洲精品| 精品日产免费二区日产免费二区 | 久久福利视频一区二区| 深夜视频在线观看| 亚洲三级在线观看| 亚洲理论中文字幕| 久久久蜜桃精品| 日韩在线观看视频一区二区| 性做久久久久久免费观看| 久久久久久无码精品大片| 精品亚洲国产视频| 亚洲国产成人二区| 麻豆亚洲一区| 玖玖视频精品| 日本成人在线免费| 一区二区三区日韩欧美| 国产成人自拍偷拍| 亚洲欧美日韩在线高清直播| 国模冰冰炮一区二区| 亚洲最大福利视频| 在线成人激情| 手机看片福利盒子久久| 成人午夜电影久久影院| 日本黄区免费视频观看| 欧美性xxxxx极品少妇| 老熟妇高潮一区二区高清视频| 一区二区成人精品| 欧美一级在线| 日本不卡二区高清三区| 老司机午夜免费精品视频 | 久久最新网址| 蜜臀精品一区二区| 成人午夜av影视| 在线能看的av| 在线视频中文亚洲| av在线亚洲一区| 国产在线播放观看| 国产一区在线精品| 免费视频91蜜桃| 91麻豆精品国产91| 99re在线视频| 51精品国产人成在线观看 | 人妻少妇精品无码专区| 久久精品电影网| 国产亚洲人成a在线v网站| 欧美激情第一页在线观看| 日本不卡在线视频| 天天躁日日躁aaaxxⅹ | 污污的视频免费| 夜夜爽夜夜爽精品视频| aaa一区二区三区| 久久九九热免费视频| 高潮按摩久久久久久av免费| 蜜臀在线免费观看| 99久久国产免费看| 国产成人精品亚洲男人的天堂 | 色网站免费在线观看| 国产精品久久国产精品99gif| 68国产成人综合久久精品| 天天躁日日躁狠狠躁av| 亚洲一区二区三区四区在线免费观看 | 国产深夜男女无套内射| 国产免费观看久久| 国产高清免费av| 国产成人综合精品在线| 午夜欧美精品久久久久久久| 久久综合桃花网| 在线观看日韩电影| 欧美78videosex性欧美|