• 主页
  • 架构
  • 编程语言
  • 数据存储
  • 网络
  • VMware
  • 服务器
  • 组网
  • AI
  • 算法系列
  • 设计模式
  • 读书笔记
  • 思考
  • 工具
  • 其它技术

  • 主页
  • 架构
  • 编程语言
  • 数据存储
  • 网络
  • VMware
  • 服务器
  • 组网
  • AI
  • 算法系列
  • 设计模式
  • 读书笔记
  • 思考
  • 工具
  • 其它技术

Go-callvis

2024-08-15

简介

go-callvis 是github上一个开源项目,可以用来查看golang代码调用关系。项目位置:https://github.com/TrueFurby/go-callvis

安装

安装graphviz

1
$ brew install graphviz

安装go-callvis

1
2
go get -u github.com/TrueFurby/go-callvis
go get -u github.com/ofabry/go-callvi //新

用法

1
$ go-callvis [flags] package

已自建项目为例:(main.go的源码文件末尾提供)

1
2
3
myproject
└── src
├── main.go

$ go-callvis -group pkg,type myproject/src

执行后,浏览器会跳出页面http://localhost:7878,可以看到代码调用关系图。点击箭头中的gin或engine,可以查看引用包的调用关系。

image-20200208170212058

注意

  1. 项目必须在GOPATH里,目前不支持go mod
  2. 如果报错failed to cache compiled Go files,则设置export GOCACHE=~/data/code/golang/myproject/gocache
  3. go-callvis的命令,github上写的不是很详细,大家可以参考一下这篇文章https://studygolang.com/articles/26211

源码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
package main

import (
"net/http"

"github.com/gin-gonic/gin"
)

// @Summary 接口探活
// @Produce json
// @Param lang query string false "en"
// @Success 200 {string} string "ok"
// @Router /ping [get]
func ping(c *gin.Context) {
c.String(http.StatusOK, "ok")
}

func main() {
r := gin.Default()
r.GET("/ping", ping)
v1 := r.Group("/v1")
{
v1.GET("/group", ping)
}
// Listen and Server in 0.0.0.0:8080
r.Run(":9090")
}

参考资料

  1. https://www.cnblogs.com/lanyangsh/p/10011093.html
  2. https://studygolang.com/articles/26211

扫一扫,分享到微信

微信分享二维码
如何在旧项目中使用gomod
如何在新项目中使用gomod
© 2025 John Doe
Hexo Theme Yilia by Litten