「工具推荐」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 快速 ...
随机推荐
- python一行代码格式化日期
print("{}/{}/{} {}:{}.{}".format(*time.localtime()))
- KingbaseES Hint 使用
前言:KingbaseES V8R6C4 之前版本hint 使用方法是与Postgresql 相同的,通过 pg_hint_plan扩展,支持在SQL中使用hint.由于该版本的hint只能放置于SQ ...
- 【读书笔记】C#高级编程 第十三章 异步编程
(一)异步编程的重要性 使用异步编程,方法调用是在后台运行(通常在线程或任务的帮助下),并不会阻塞调用线程.有3中不同的异步编程模式:异步模式.基于事件的异步模式和新增加的基于任务的异步模式(TAP, ...
- 5、Math类
Math类 Math类包含用于执行基本数学运算的方法,如初等数学,对数,平方根和三角函数 常用方法 //Math 常用方法(静态方法) //1.abs 绝对值 int abs = Math.abs(- ...
- JAVA SE 基础总结
§ 基础知识 一.程序组织与运行原理 1.1 程序组织 一个 JAVA 程序文件中主要由如下几部分构成: package 声明 public 类:public 类与类文件名相同,因为其是作为该类文件唯 ...
- Django 目录
1 Python Web开发主流框架 2 Django 简介和版本介绍 3 Django 使用cmd 创建工程 4 Django 创建 APP和目录结构介绍 5 Django 使用VScode 创建工 ...
- 复现禅道V16.5的SQL注入(CNVD-2022-42853)
漏洞详情 禅道V16.5未对输入的account参数内容作过滤校验,导致攻击者拼接恶意SQL语句执行. 环境搭建 环境下载:禅道V16.5 下载后双击运行,进入目录运行start.exe 直接访问即可 ...
- MySQL数据库-数据表(上)
数据表的基本操作. MySQL 数据库支持多种数据类型,大致可以分为 3 类:数值类型.日期和时间类型.字符串(字符)类型. (1)数值类型 数值类型用于存储数字型数据,这些类型包括整数类型(TINY ...
- [题解] HDU 5115 Dire Wolf 区间DP
考虑先枚举所有的物品中最后拿走的,这样就分成了2个子问题,即先拿完左边的,再拿完右边的,最后拿选出的那个.令dp(i,j)表示拿完[i,j]所有物品的最小代价.你可能会说,我们拿[i,j]这一段物品的 ...
- 支持 Java 8/11/17/19 的框架,Solon v1.10.5 版本发布
Java 轻量级应用开发框架.可用来快速开发 Java 应用项目,主框架仅 0.1 MB. 相对于 Spring Boot 和 Spring Cloud 的项目: 启动快 5 - 10 倍. (更快) ...