Bazel ビルドシステム
Bazel はオープンソースのビルドおよびテストツールで、graphviz 依存関係グラフを出力できます。
このグラフは、C++ ライブラリの Abseil のソースにクエリを実行して、Abseil の乱数ライブラリが Abseil の文字列ライブラリにどのように依存しているかをすべて取得して生成されています。--output=graph
を使用すると Graphviz グラフが出力されます。
bazel query --output=graph --notool_deps 'allpaths(//absl/random, //absl/strings)' | dot -Tsvg > /tmp/deps.svg
詳細については Bazel クエリの使い方 を参照してください。
[入力 .gv ファイル] [SVG] [ラスター画像]
bazel.gv.txt
digraph mygraph {
fontname="Helvetica,Arial,sans-serif"
node [fontname="Helvetica,Arial,sans-serif"]
edge [fontname="Helvetica,Arial,sans-serif"]
node [shape=box];
"//absl/random:random"
"//absl/random:random" -> "//absl/random:distributions"
"//absl/random:random" -> "//absl/random:seed_sequences"
"//absl/random:random" -> "//absl/random/internal:pool_urbg"
"//absl/random:random" -> "//absl/random/internal:nonsecure_base"
"//absl/random:distributions"
"//absl/random:distributions" -> "//absl/strings:strings"
"//absl/random:seed_sequences"
"//absl/random:seed_sequences" -> "//absl/random/internal:seed_material"
"//absl/random:seed_sequences" -> "//absl/random/internal:salted_seed_seq"
"//absl/random:seed_sequences" -> "//absl/random/internal:pool_urbg"
"//absl/random:seed_sequences" -> "//absl/random/internal:nonsecure_base"
"//absl/random/internal:nonsecure_base"
"//absl/random/internal:nonsecure_base" -> "//absl/random/internal:pool_urbg"
"//absl/random/internal:nonsecure_base" -> "//absl/random/internal:salted_seed_seq"
"//absl/random/internal:nonsecure_base" -> "//absl/random/internal:seed_material"
"//absl/random/internal:pool_urbg"
"//absl/random/internal:pool_urbg" -> "//absl/random/internal:seed_material"
"//absl/random/internal:salted_seed_seq"
"//absl/random/internal:salted_seed_seq" -> "//absl/random/internal:seed_material"
"//absl/random/internal:seed_material"
"//absl/random/internal:seed_material" -> "//absl/strings:strings"
"//absl/strings:strings"
}