Go-Callvisは、インタラクティブビューを使用してGOプログラムのコールグラフを視覚化するのに役立つ開発ツールです。
このツールの目的は、コールグラフのデータとパッケージとタイプとの関係を使用して、GOプログラムの視覚的な概要を開発者に提供することです。これは、コードの複雑さがはるかに高い大規模なプロジェクトや、単に他の誰かのコードを理解しようとしている場合に特に役立ちます。

上記の画像のソースコードをご覧ください。
ポインター分析を実行してプログラムのコールグラフを構築し、データを使用してDOT形式で出力を生成します。これはGraphVizツールでレンダリングできます。
-graphvizフラグのみが必要)Go-Callvisをインストールするには、実行してください。
# Latest release
go install github.com/ofabry/go-callvis@latest
# Development version
go install github.com/ofabry/go-callvis@masterまたは、リポジトリをクローンしてソースコードをコンパイルします。
# Clone repository
git clone https://github.com/ofabry/go-callvis.git
cd go-callvis
# Compile and install
make installフォーカスパッケージのSVG画像を提供するWebサーバーが提供するインタラクティブビューを使用するには、単純に実行できます。
go-callvis <target package>
httpサーバーはhttp:// localhost:7878/defaultでリスニングしています。デフォルトでは、option -http="ADDR:PORT"を使用してHTTPサーバーアドレスを変更します。
単一の出力ファイルを生成するには、オプション-file=<file path>を使用して、出力ファイル宛先を選択します。
出力形式は、 svgにデフォルトで、オプション-format=<svg|png|jpg|...>を使用して、別の出力形式を選択します。
Usage of go-callvis:
-debug
Enable verbose log.
-file string
output filename - omit to use server mode
-cacheDir string
Enable caching to avoid unnecessary re-rendering.
-focus string
Focus specific package using name or import path. (default "main")
-format string
output file format [svg | png | jpg | ...] (default "svg")
-graphviz
Use Graphviz's dot program to render images.
-group string
Grouping functions by packages and/or types [pkg, type] (separated by comma) (default "pkg")
-http string
HTTP service address. (default ":7878")
-ignore string
Ignore package paths containing given prefixes (separated by comma)
-include string
Include package paths with given prefixes (separated by comma)
-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
Omit calls to unexported functions.
-nostd
Omit calls to/from packages in standard library.
-rankdir
Direction of graph layout [LR | RL | TB | BT] (default "LR")
-skipbrowser
Skip opening browser.
-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
Include test code.
-version
Show version and exit.
go-callvis -hを実行して、サポートされているすべてのオプションをリストします。
ここでは、さまざまな種類の出力の説明を見つけることができます。
| 表現します | スタイル |
|---|---|
focused | 青色 |
stdlib | 緑色 |
other | 黄色 |
| 表現します | スタイル |
|---|---|
exported | 大胆なボーダー |
unexported | 通常の境界 |
anonymous | 点線の境界 |
| 表現します | スタイル |
|---|---|
internal | 黒色 |
external | 茶色 |
static | 実線 |
dynamic | 破線 |
regular | 単純な矢印 |
concurrent | 円付きの矢印 |
deferred | ダイヤモンド付きの矢印 |
プロジェクトの同期の例を次に示します。

その他の例と使用されているコマンドオプションをご覧ください。
Gophers.slack.comで#Go-Callvisチャンネルに参加します。 (まだメンバーではありませんか?招待状を取得します)
バグを見つけましたか、それともいくつかの提案がありましたか?
プロジェクトに貢献したいですか?
このプロジェクトの理想的な目標は、コールグラフデータをローカルに保存し、依存関係ツリーの任意のパッケージにコールグラフにすばやくアクセスできるWebアプリを作成することです。最初は、パッケージ間の全体的な依存関係のインタラクティブなマップを表示し、特定のパッケージを選択することにより、コールグラフを表示し、出力を動的に変更するさまざまなオプションを提供します。