Entries

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

コールグラフを出してみる(Doxygen)

タグ: Doxygen
void Z();
void Y();
void X();
void W();
void V();
void U() { Z(); V(); }
void T() { Y(); Z(); }
void S() { X(); Y(); }
void R() { W() ;X(); }
void Q() { V(); W(); }
void P() { Z(); V(); }
void O() { T(); U(); }
void N() { S(); T(); }
void M() { R(); S(); }
void L() { Q(); R(); }
void K() { P(); Q(); }
void J() { N(); O(); }
void I() { M(); N(); }
void H() { L(); M(); }
void G() { K(); L(); }
void F() { I(); J(); }
void E() { H(); I(); }
/// @callergraph
void D() { G(); H(); }
void C() { E(); F(); }
/// @callgraph
/// @callergraph
void B() { D(); E(); }
/// @callgraph
void A() { B(); C(); }

以上のソースコードを以下のDoxyfileでドキュメント化すると、コメントブロックに「@callgraph」コマンドを含む関数から「呼び出しグラフ(コールグラフ)」が、「@callergraph」コマンドを含む関数から「呼び出し元グラフ」が生成される。

# dotはコールグラフの作成に必須
HAVE_DOT = YES
# 全ての関数をドキュメント化する
EXTRACT_ALL = YES
# 以下「Latex不要」「日本語で」「dotのフォントはヒラギノ角ゴで」
GENERATE_LATEX = NO
OUTPUT_LANGUAGE = Japanese
DOT_FONTNAME = "Hiragino Kaku Gothic Pro"
部分コールグラフ

また、Doxyfileに以下の文を追加すると、全ての関数から「呼び出し/呼び出し元グラフ」が生成される。

CALL_GRAPH = YES
CALLER_GRAPH = YES
コールグラフA全体 コールグラフH全体

このくらいのサイズなら、まあ、見ていて楽しい。
しかし、プログラムがでかかったり、関数名が長い(Objectie-Cとか特に)と非常に鬱陶しいことになる。
そういう場合は、「グラフの最大深度」を設定して適度な大きさに収めたり

MAX_DOT_GRAPH_DEPTH = 3
コールグラフA深度3 コールグラフH深度3

DHTMLで任意に開閉できるようにすると、いくらか見やすくなる。

HTML_DYNAMIC_SECTIONS = YES
コールグラフ開閉

あとは、このグラフをどう役立てるかだ……

スポンサーサイト

コメント

コメントの投稿

コメントの投稿
管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://idlysphere.blog66.fc2.com/tb.php/176-1979c126
この記事にトラックバックする(FC2ブログユーザー)

Appendix

タグ

Blog内検索

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。