Watch 1 Star 0

码云极速下载 / go-callvisMIT

Sign up for free
Explore and code with more than 2 million developers,Free private repositories !:)
Sign up
此仓库是为了提升国内下载速度的镜像仓库,每日同步一次。 原始仓库:
Nothing here. spread retract

Clone or download



Github release Build status Slack channel

go-callvis is a development tool to help visualize call graph of a Go program using interactive view.


The purpose of this tool is to provide developers with a visual overview of a Go program using data from call graph and its relations with packages and types. This is especially useful in larger projects where the complexity of the code much higher or when you are just simply trying to understand code of somebody else.


  • focus specific package in the program
  • group functions by package and/or methods by type
  • filter packages to specific import path prefixes
  • omit various types of function calls
  • :boom: NEW! interactive view using HTTP server that serves SVG images with links to dynamically change focused package

Output preview


Check out the source code for the above image.

How it works

It runs pointer analysis to construct the call graph of the program and uses the data to generate output in dot format, which can be rendered with Graphviz tools.

Reference guide

Here you can find descriptions for various types of output.

Packages / Types

Represents Style
focused blue color
stdlib green color
other yellow color

Functions / Methods

Represents Style
exported bold border
unexported normal border
anonymous dotted border


Represents Style
internal black color
external brown color
static solid line
dynamic dashed line
regular simple arrow
concurrent arrow with circle
deferred arrow with diamond

Quick start



go get -u
cd $GOPATH/src/ && make


go-callvis [flags] <main package>

This will start HTTP server listening at http://localhost:7878/. You can change it via -http flag.


-focus string
      Focus package with import path or name. (default: main)
-group string
    Grouping functions by packages and/or types. [pkg, type] (separated by comma)
-http string
	HTTP service address. (default ":7878")
-limit string
    Limit package paths to prefix. (separated by comma)
-ignore string
    Ignore package paths with prefix. (separated by comma)
-include string
   	Include package paths with given prefixes (separated by comma)
	Omit calls to unexported functions.
	Omit calls to/from packages in standard library.
-tags build tags
	a list of build tags to consider satisfied during the build.
	Include test code.

Run go-callvis -h to list all supported flags.


Here is an example for the project syncthing.

syncthing example

Check out more examples and used command options.


Join #go-callvis channel at (not a member yet? get invitation)

How to help

Did you find any bugs or have some suggestions?

  • Feel free to open new issue or start discussion in the slack channel.

Do you want to contribute to the project?

  • Fork the repository and open a pull request. Here you can find TODO features.


The interactive tool described below has been published as a separate project called goexplorer!

Ideal goal of this project is to make web app that would locally store the call graph data and then provide quick access of the call graphs for any package of your dependency tree. At first it would show an interactive map of overall dependencies between packages and then by selecting particular package it would show the call graph and provide various options to alter the output dynamically.

Comments ( 0 )

You need to Sign in for post a comment

Help Search