「工具推荐」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
复制代码

运行依赖

项目地址: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 包的调用关系:

通过图可以直观的看到,

  1. static 调用了 staticFS,而staticFS 只使用了 HEAD和GET 方法。
  2. 所有的http method 最终都是通过调用handler来处理响应的。

### go-callvis 的另类用法

go-callvis 也可以用来评估系统设计是否合理,代码是否清晰,下图是docker 的调用图:

作者:goodspeed
链接:https://juejin.cn/post/6844904051327369229
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

「工具推荐」golang 代码可视化工具 go-callvis的更多相关文章

  1. 「starter推荐」简单高效Excel 导出工具

    EasyExcel EasyExcel是一个基于Java的简单.省内存的读写Excel的开源项目.在尽可能节约内存的情况下支持读写百M的Excel. 64M内存1分钟内读取75M(46W行25列)的E ...

  2. Golang 代码检查工具

    需要先安装 gometalinter工具 #!/bin/bash #should install #go get github.com/alecthomas/gometalinter #gometal ...

  3. NuGet命令行工具和可视化工具

    Nuget出了命令行工具之外,还有一个可视化工具,下载地址如下: 命令行(推荐官网下载,有中文提示!):https://dist.nuget.org/index.html 可视化(简单.方便.易用): ...

  4. [MongoDB]可视化工具Robomongo

    摘要 习惯了可视化的管理数据的方式,通过敲命令,确实有些不自在.这里推荐一个mongodb的可视化工具——Robomongo 相关文章 [MongoDB]入门操作 [MongoDB]增删改查 [Mon ...

  5. Android代码安全工具集

    前言 原计划出一系列APP测试文章,从基础发,整个思路还在整理,秉着吹牛的态度,整理了一部分安卓代码安全的工具推荐给大家玩玩,提升一下逼格. 在这之前给大家讲讲阿旺对安全测试的理解,不管别人怎么扯,一 ...

  6. eclipse Java代码折叠工具

      eclipse Java代码折叠工具 CreateTime--2018年5月17日15点09分 Author:Marydon 1.问题描述 eclipse自带的代码折叠工具,无法折叠try{}ca ...

  7. MySQL学习(一)MySQLWorkbench(MySQL可视化工具)下载,安装,测试连接,以及注意事项

    PS:MySQLWorkbench是MYSQL自带的可视化工具,无论使用哪个可视化工具,其实大同小异,如果想以后走的更远的话,可以考虑使用命令行操作数据库MYSQL.可视化工具让我们初学者更能理解数据 ...

  8. python代码检查工具pylint 让你的python更规范

    1.pylint是什么? Pylint 是一个 Python 代码分析工具,它分析 Python 代码中的错误,查找不符合代码风格标准(Pylint 默认使用的代码风格是 PEP 8,具体信息,请参阅 ...

  9. 【MySQL数据库】MySQL5.7安装与配置、可视化工具安装和破解

    软件下载 Mysql5.7地址:https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.19-winx64.zip 安装步骤 下载后会得到zip ...

  10. 工具推荐-使用RedisInsight工具对Redis集群CURD操作及数据可视化和性能监控

    关注「WeiyiGeek」公众号 设为「特别关注」每天带你玩转网络安全运维.应用开发.物联网IOT学习! 希望各位看友[关注.点赞.评论.收藏.投币],助力每一个梦想. 本章目录 目录 0x00 快速 ...

随机推荐

  1. KFS replicator安装(Mysql-KES)

    源端mysql 一.安装前置配置 1.创建安装用户 groupadd flysync useradd flysync -g flysync -G mysql passwd flysync 2.上传安装 ...

  2. Linux下以tar包的形式安装mysql8.0.28

    Linux下以tar包的形式安装mysql8.0.28 1.首先卸载自带的Mysql-libs(如果之前安装过mysql,要全都卸载掉) rpm -qa | grep -i -E mysql\|mar ...

  3. 腾讯云即时通信 IM 服务 实例项目

    腾讯云即时通信 IM 服务  https://github.com/tencentyun/TIMSDK

  4. day04-1群聊功能

    多用户即时通讯系统04 4.编码实现03 4.5功能实现-群聊功能实现 4.5.1思路分析 群聊的实现思路和私聊的实现非常类似. 不同的是:私聊时,服务端接收到消息后,只需要找出接收方的socket并 ...

  5. 数据结构之单链表(基于Java实现)

    链表:在计算机中用一组任意的存储单元存储线性表的数据元素称为链式存储结构,这组存储结构可以是连续的,也可以是不连续的,因此在存储数据元素时可以动态分配内存. 注:在java中没有指针的概念,可以理解为 ...

  6. mac通过docker一键部署Nexus3

    目录 mac通过docker一键部署Nexus3 一.前言 二.系统配置 三.安装步骤 1.Dockerhub查看镜像地址 2.一键安装 2.1.克隆脚本 2.2.安装程序 2.2.1.程序安装详情 ...

  7. Golang可能会踩的58个坑之初级篇

    前言 Go 是一门简单有趣的编程语言,与其他语言一样,在使用时不免会遇到很多坑,不过它们大多不是 Go 本身的设计缺陷.如果你刚从其他语言转到 Go,那这篇文章里的坑多半会踩到. 如果花时间学习官方 ...

  8. 6.ElasticSearch系列之倒排索引

    1. 倒排索引简介 对于书通过目录查找对应章节内容的方式属于正排索引,而对于想查询文本,如我爱中国在书籍中出现的次数与具体位置,则是倒排索引的范畴. 2. 倒排索引核心组成 单词词典(Term Dic ...

  9. ZJOI2007报表统计

    题目链接 比较简单的一道平衡树题. 第三个操作可以直接用map完成(加进去一个数只会让答案变小,于是与它的前面后面一个数做差更新答案即可),只考虑前两个操作. ·维护区间内的最大最小值,以及区间相邻两 ...

  10. Windows docker环境安装

    前期准备 1.hyper-v功能 win10家庭版没有提供hyper-v的问题可通过如下脚本解决,保存为bat并运行重启电脑即可. pushd "%~dp0" dir /b %Sy ...