TL;DR
https://github.com/momotaro98/goviz をgo get
して使えば、以下のような感じで、あなたやあなたの職場のプライベートなGoプロジェクトのパッケージ依存関係が可視化できるようになります。
前提
この記事は以下記事リスペクトの記事になります。
上記記事制作者の方が作成したgovizというツールが現状(2021年6月19日時点)で長らくメンテナンスされておらず、別の方がフォークしたものをさらにフォークする形で修正をしました。
筆者のフォークしたレポジトリが以下になります。
既存のgovizは$GOPATH/src
配下のソースコードしか解析対象にしていなかったので、go get
はしていないプライベートなGoプロジェクトも解析対象にするように筆者が改修しました。
使い方
インストール
go get github.com/momotaro98/goviz
or
go install github.com/momotaro98/goviz@latest
そして別ツールである graphviz のグラフ生成ツールもインストールしておく必要があります。
brew install graphviz
使う
Step1: Goプロジェクトがあるディレクトリへ移動する。
このとき、go.mod
があるディレクトリへの移動をしてください。
Step2: go.modにあるモジュール名を確認
以下はサンプルのプロジェクトです。以下の場合は、github.com/momotaro98/isucon9-q/webapp/go
になります。
go.mod
module github.com/momotaro98/isucon9-q/webapp/go
go 1.15
require (
github.com/go-sql-driver/mysql v1.4.1
github.com/gorilla/sessions v1.2.0
github.com/jmoiron/sqlx v1.2.0
goji.io v2.0.2+incompatible
golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4
)
Step3: go.modがあるディレクトリ上にてエントリーポイントのGoファイルがあるディレクトリを指定して実行
goviz -i github.com/momotaro98/isucon9-q/webapp/go | dot -Tpng -o project.png
生成されたproject.png
が冒頭のスクショの図になります。