您当前的位置:首页 > 手机百科 > 微信百科

Golang 可视化工具之go-callvis

时间:2022-08-14 11:53:08  来源:  作者:Kaliarch

 

一 背景

日常我们会看一些开源项目,或者想看自己写的代码可视化,在golang中可以利用工具实现,go-callvis是以图片的形式展示了go程序的调用关系,在看复杂项目时尤其有用。

二 go-callvies 简介

2.1 工具简介

Go-callvis 是一个开发工具,用于帮助使用交互式视图可视化 Go 程序的调用图。

此工具的目的是为开发人员提供一个可视化的 Go 程序概览,使用来自调用图的数据及其与包和类型的关系。这在大型项目中特别有用,因为这些项目的代码复杂度要高得多,或者只是简单地试图理解其他人的代码。

2.2 特性

  • 支持go mod
  • 程序中的特定焦点包
  • 点击软件包,使用交互式查看器快速切换焦点
  • 按类型按包和/或方法分组函数
  • 过滤器包到特定的导入路径前缀
  • 忽略标准库中的函数
  • 省略各种类型的函数调用

三 安装

  • go get安装
$ go get -u Github.com/ofabry/go-callvis 复制代码
  • 源码编译安装
$ git clone https://github.com/ofabry/go-callvis.git cd go-callvis && make install复制代码

四 输出示例

 

它运行指针分析来构造程序的调用图,并使用数据生成点格式的输出,可以使用 Graphviz 工具进行渲染。

五 安装

go get -u github.com/ofabry/go-callvis# orgit clone https://github.com/ofabry/go-callvis.gitcd go-callvis && make install复制代码

六 使用

go-callvis [可选参数] <包路径>

1)使用浏览器交互展示

默认情况下,HTTP服务器在http://localhost:7878/上侦听,请使用选项`-http="ADDR:PORT"`更改HTTP服务器地址。

2)静态输出

要生成单个输出文件,使用选项-file=<file path>选择输出文件目标。

输出格式默认为svg,使用选项-format=<svg|png|jpg|…>选择其他输出格式。

3)其他参数

-debug         输出详细日志   -file string         以文件新式输出结果,并将忽略server交互模式   -focus string         Focus specific package using name or import path. (default "mAIn")   -format string         输出文件的格式 [svg | png | jpg | ...] (默认 "svg")   -graphviz         使用Graphviz渲染图像   -group string         分组功能,根据包 与/或 类型分组 [pkg, type] (用逗号分开) (默认 "pkg"),例如 -group pkg,type   -http string         HTTP 服务地址 (默认 ":7878")   -ignore string        忽略包含给定前缀的包路径(用逗号分开)   -include string         包含具有给定前缀的包路径 (用逗号分开)   -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)   -nointer         忽略对未导出函数的调用。   -nostd         忽略标准库的调用   -skipbrowser         跳过打开浏览器   -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         包含测试代码   -version         显示版本号                  1)解析main包go-callvis -skipbrowser -nostd ./2)解析testPkg包go-callvis -group pkg,type -focus testPkg github.com/项目具体路径 复制代码

简单示例

$ go-callvis -format png -group pkg,type -focus github.com/kaliarch/cobra/cmd/App github.com/kaliarch/cobra2021/08/18 11:22:12 http serving at http://localhost:78782021/08/18 11:22:21 converting dot to png..2021/08/18 11:22:22 serving file: /var/folders/wn/367g1v9n1bv0sg1k8qldzym80000gn/T/go-callvis_export.png复制代码

 



Tags:Golang   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
慢聊Golang协程池Ants实现原理
大家都知道goroutine 是 Go语言中的轻量级线程实现,由 Go 运行时(runtime)管理,Go 程序会智能地将 goroutine 中的任务合理地分配给每个 CPU。创建一个goroutine大小大概在2k左...【详细内容】
2023-12-27  Search: Golang  点击:(94)  评论:(0)  加入收藏
基于Go-Kit的Golang整洁架构实践
简介Go是整洁架构(Clean Architecture)的完美选择。整洁架构本身只是一种方法,并没有告诉我们如何构建源代码,在尝试用新语言实现时,认识到这点非常重要。自从我有了使用Ruby o...【详细内容】
2023-12-25  Search: Golang  点击:(158)  评论:(0)  加入收藏
Golang清晰代码指南
发挥易读和易维护软件的好处 - 第一部分嗨,开发者们,清晰的代码是指编写易于阅读、理解和维护的软件代码。它是遵循一组原则和实践,优先考虑清晰性、简单性和一致性的代码。清...【详细内容】
2023-12-18  Search: Golang  点击:(131)  评论:(0)  加入收藏
如何优雅的组织Golang项目结构
一个Go项目的结构设计始终遵循Go语言的简洁高效理念。一个合理和良好的布局可以提高代码的可读性,简化依赖管理,并优化编译过程。像cmd、internal和docs这样的目录是标准Go项...【详细内容】
2023-12-06  Search: Golang  点击:(169)  评论:(0)  加入收藏
从 Discord 的做法中学习 — 使用 Golang 进行请求合并
正如你可能之前看到的,Discord去年发布了一篇有价值的文章,讨论了他们成功存储了数万亿条消息。虽然有很多关于这篇文章的YouTube视频和文章,但我认为这篇文章中一个名为“数据...【详细内容】
2023-11-24  Search: Golang  点击:(258)  评论:(0)  加入收藏
使用Golang进行自动化的20个库
Golang,也被称为Go,是一种静态类型的编译型编程语言,由Robert Griesemer,Rob Pike和Ken Thompson在Google设计。它在2009年推出,旨在解决其他编程语言在并发编程、垃圾回收和代码...【详细内容】
2023-11-23  Search: Golang  点击:(206)  评论:(0)  加入收藏
Golang 中的 Bytes 包详解之 Bytes.Buffer
上篇文章详细讲解了一次性密码 OTP 相关的知识,基于时间的一次性密码 TOTP 是 OTP 的一种实现方式。这种方法的优点是不依赖网络,因此即使在没有网络的情况下,用户也可以生成密...【详细内容】
2023-11-07  Search: Golang  点击:(262)  评论:(0)  加入收藏
聊聊Golang饱受争议的Error
一、error是什么?在C中,返回错误通过errno.h中的错误代码来表示,比如0代表No error,也就是没有错误;2代表No such file or directory,也就是找不到指定路径的文件或文件夹;5代表Inp...【详细内容】
2023-11-06  Search: Golang  点击:(256)  评论:(0)  加入收藏
使用示例和应用程序全面了解高效数据管理的Golang MySQL数据库
Golang,也被称为Go,已经成为构建强大高性能应用程序的首选语言。在处理MySQL数据库时,Golang提供了一系列强大的库,简化了数据库交互并提高了效率。在本文中,我们将深入探讨一些...【详细内容】
2023-10-29  Search: Golang  点击:(307)  评论:(0)  加入收藏
Golang中的强大Web框架
揭示Fiber在Go Web开发中的特点和优势在不断发展的Web开发领域中,选择正确的框架可以极大地影响项目的效率和成功。介绍一下Fiber,这是一款令人印象深刻的Golang(Go语言)Web框架...【详细内容】
2023-10-26  Search: Golang  点击:(259)  评论:(0)  加入收藏
▌简易百科推荐
微信好友“隐身”删除?轻松识别已删除好友新策略
在数字化的社交世界中,微信已然成为我们与朋友、亲人保持联系的重要纽带。然而,随着微信的广泛使用,一个问题也悄然而至:有时候,我们的微信好友列表中,可能隐藏着一些已经单方面删...【详细内容】
2024-04-11  诺诺爱生活    Tags:微信好友   点击:(2)  评论:(0)  加入收藏
微信宣布打击租售微信账号行为:避免隐私泄露,成不法分子帮凶
IT之家 4 月 10 日消息,微信安全中心今日傍晚发文称,近期有部分用户利用微信社交功能,在朋友圈、微信群发布“闲置小号换零花钱”等租售微信账号的相关内容。IT之家从公告中获...【详细内容】
2024-04-11    IT之家  Tags:微信账号   点击:(4)  评论:(0)  加入收藏
一招教你怎么对微信聊天记录进行保存
在数字化交流日益频繁的今天,微信作为我们日常生活中的重要沟通工具,承载了无数珍贵的对话和回忆。聊天记录中,无论是与亲朋好友的欢笑谈天,还是工作中的重要交流,都可能成为我们...【详细内容】
2024-04-10  无心生活    Tags:聊天记录   点击:(2)  评论:(0)  加入收藏
启用微信这两大功能,快速清理手机存储
随着微信成为我们日常生活中不可或缺的通讯工具,它的功能不断丰富,使用频率也日益增加。然而,频繁的使用往往会带来手机内存空间的压力。为了保持手机的流畅运行,我们需要定期对...【详细内容】
2024-04-10  老林爱分享生活    Tags:手机存储   点击:(2)  评论:(0)  加入收藏
微信共享位置怎么换地方
微信共享位置怎么换地方的方法。必然绕不开使用微信,共享位置的使用也就是必然的。如何去修改一下安卓上的共享位置呢?对于很多人来说,虽然使用次数不频繁,但是可能有时会比较着...【详细内容】
2024-04-09  奇思妙想的哆啦    Tags:微信共享位置   点击:(4)  评论:(0)  加入收藏
微信恢复聊天记录全攻略:多种方法助你轻松找回宝贵记忆
在数字化时代,微信聊天记录往往承载着我们的许多珍贵回忆和重要信息。然而,由于各种原因,我们有时可能会误删或丢失一些聊天记录。那么,当遇到这种情况时,我们该如何恢复微信聊天...【详细内容】
2024-04-09  我们要向前进    Tags:聊天记录   点击:(7)  评论:(0)  加入收藏
如何实现微信聊天记录从旧手机到新手机的无缝对接
在数字化时代,手机已然成为我们生活中不可或缺的一部分,而微信更是我们日常沟通的重要工具。然而,当我们更换新手机时,如何将旧手机中的微信聊天记录完整地迁移到新手机,成为许多...【详细内容】
2024-04-09  诺诺爱生活    Tags:微信聊天记录   点击:(6)  评论:(0)  加入收藏
微信语言、听筒,没有声音提醒?原来是这几个地方没设置,望知晓
微信作为我们日常生活中不可或缺的通讯工具,其功能的完善和使用体验的优化一直是用户们关注的焦点。然而,有时候我们可能会遇到微信语音或听筒没有声音提醒的问题,这不仅影响了...【详细内容】
2024-04-09    小城慢时光  Tags:微信   点击:(6)  评论:(0)  加入收藏
微信朋友圈如何置顶
智能手机的时代,微信作为一款广受欢迎的社交软件,朋友圈是微信的核心功能之一。在微信朋友圈中,有些信息对于小伙伴们来说非常重要,为了方便自己和朋友找到可以选择置顶,置顶后自...【详细内容】
2024-04-08  大冬瓜pc技术支持    Tags:微信朋友圈   点击:(7)  评论:(0)  加入收藏
详解微信里面的分期可以提现吗?可以在哪里使用
微信作为一款广泛使用的社交软件,不仅提供了聊天、朋友圈分享等基础功能,还融合了支付、购物、金融等多种服务。其中,微信分期作为一种便捷的金融服务,受到了许多用户的青睐。那...【详细内容】
2024-04-08  张震爱动漫    Tags:微信   点击:(5)  评论:(0)  加入收藏
站内最新
站内热门
站内头条