「工具推荐」golang 代码可视化工具 go-callvis
「工具推荐」go-callvis
go-callvis是相对 以图片的形式展示了go程序的调用关系,这个工具在看复杂项目时尤其有用。
亲测,借助它看祖传golang代码,头痛好多了。
安装
go get -u github.com/TrueFurby/go-callvis
# or
git clone https://github.com/TrueFurby/go-callvis.git
cd go-callvis && make install
复制代码
运行依赖
- Go 1.12+
- Graphviz:http://www.graphviz.org/download/ Mac 可以直接 brew install graphviz
项目地址:https://github.com/TrueFurby/go-callvis
使用命令
命令特别简单,只需要简单的输入:
go-callvis [OPTIONS] <main package>
复制代码
这里 main package 是包含代码的main函数所在的包,比如项目 github.com/gusibi/onep…
目录结构为:
.
├── 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 参数排除掉。
命令为:
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
复制代码
结果如图:
详细命令可以参考:github.com/TrueFurby/g…
使用go-callvis ,直观的展示代码的调用关系,对于大项目的源码尤其有用,比如下图是gin stagic 包的调用关系:
通过图可以直观的看到,
- static 调用了 staticFS,而staticFS 只使用了 HEAD和GET 方法。
- 所有的http method 最终都是通过调用handler来处理响应的。
### go-callvis 的另类用法
go-callvis 也可以用来评估系统设计是否合理,代码是否清晰,下图是docker 的调用图:
作者:goodspeed
链接:https://juejin.cn/post/6844904051327369229
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
「工具推荐」golang 代码可视化工具 go-callvis的更多相关文章
- 「starter推荐」简单高效Excel 导出工具
EasyExcel EasyExcel是一个基于Java的简单.省内存的读写Excel的开源项目.在尽可能节约内存的情况下支持读写百M的Excel. 64M内存1分钟内读取75M(46W行25列)的E ...
- Golang 代码检查工具
需要先安装 gometalinter工具 #!/bin/bash #should install #go get github.com/alecthomas/gometalinter #gometal ...
- NuGet命令行工具和可视化工具
Nuget出了命令行工具之外,还有一个可视化工具,下载地址如下: 命令行(推荐官网下载,有中文提示!):https://dist.nuget.org/index.html 可视化(简单.方便.易用): ...
- [MongoDB]可视化工具Robomongo
摘要 习惯了可视化的管理数据的方式,通过敲命令,确实有些不自在.这里推荐一个mongodb的可视化工具——Robomongo 相关文章 [MongoDB]入门操作 [MongoDB]增删改查 [Mon ...
- Android代码安全工具集
前言 原计划出一系列APP测试文章,从基础发,整个思路还在整理,秉着吹牛的态度,整理了一部分安卓代码安全的工具推荐给大家玩玩,提升一下逼格. 在这之前给大家讲讲阿旺对安全测试的理解,不管别人怎么扯,一 ...
- eclipse Java代码折叠工具
eclipse Java代码折叠工具 CreateTime--2018年5月17日15点09分 Author:Marydon 1.问题描述 eclipse自带的代码折叠工具,无法折叠try{}ca ...
- MySQL学习(一)MySQLWorkbench(MySQL可视化工具)下载,安装,测试连接,以及注意事项
PS:MySQLWorkbench是MYSQL自带的可视化工具,无论使用哪个可视化工具,其实大同小异,如果想以后走的更远的话,可以考虑使用命令行操作数据库MYSQL.可视化工具让我们初学者更能理解数据 ...
- python代码检查工具pylint 让你的python更规范
1.pylint是什么? Pylint 是一个 Python 代码分析工具,它分析 Python 代码中的错误,查找不符合代码风格标准(Pylint 默认使用的代码风格是 PEP 8,具体信息,请参阅 ...
- 【MySQL数据库】MySQL5.7安装与配置、可视化工具安装和破解
软件下载 Mysql5.7地址:https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.19-winx64.zip 安装步骤 下载后会得到zip ...
- 工具推荐-使用RedisInsight工具对Redis集群CURD操作及数据可视化和性能监控
关注「WeiyiGeek」公众号 设为「特别关注」每天带你玩转网络安全运维.应用开发.物联网IOT学习! 希望各位看友[关注.点赞.评论.收藏.投币],助力每一个梦想. 本章目录 目录 0x00 快速 ...
随机推荐
- 第六十六篇:Vue的watch侦听器
好家伙,哇吃侦听器 1.watch侦听器 watch侦听器允许开发者监视数据的变化,从而针对数据的变化做特定的操作 1.1.侦听器的基本用法 <body> <div id=" ...
- Openstack之各组件命令
openstack 组件命令 Glance组件操作(镜像服务组件) #环境配置: source /etc/keystone/admin-openrc.sh #查看镜像列表: glance image- ...
- luogu P2882 [USACO07MAR]Face The Right Way G
题目描述 Farmer John has arranged his N (1 ≤ N ≤ 5,000) cows in a row and many of them are facing forwar ...
- Windows SMTP服务器的中继列表
今天在一台Windows 2019的SMTP服务器上想增加一个匿名中继的客户端地址.登录到服务器后发现原来的设置丢失了,而且原来的允许列表也不见了.界面变成了这样. https://www.cnblo ...
- MySQL8配置文件
- Elasticsearch:significant terms aggregation
在本文中,我们将重点关注significant terms和significant text聚合.这些聚合旨在搜索数据集中有趣和/或不寻常的术语,这些术语可以告诉您有关数据的隐藏属性的更多信息.此功能 ...
- Kafka QuickStart
环境版本 操作系统:CentOS release 6.6 (Final) java版本: jdk1.8 kafka 版本: kafka_2.11-1.1.1.tgz 安装kafka 1. 下载压缩包, ...
- Python解释器路径寻找规则
Python编辑器路径寻址总结 Python编程优化 这场表演邀请了三位角色:run.sh.main.py.path.sh,拍摄场地选在了 Windows -> Git Bash 群演1号 ru ...
- vue3 vite2 封装 SVG 图标组件 - 基于 vite 创建 vue3 全家桶项目续篇
在<基于 vite 创建 vue3 全家桶>一文整合了 Element Plus,并将 Element Plus 中提供的图标进行全局注册,这样可以很方便的延续 Element UI 的风 ...
- Python 实验报告(第三周)
一.实验目的和要求 1.熟练运用常见选择结构: 2.熟练运用for循环和while循环: 3.理解带else语句的循环结构执行过程和break.continue语句在循环中的作用. 二.实验环境 软件 ...