社内の既存プロジェクト(C++/CLI)について、ある関数(下記ソース:FuncA)の呼び出し関係図が必要となり、Doxygenの設定を行い、出力を行いました。
Doxygenの実行は成功し、呼び出し関係図も出力されました。
しかし出力ドキュメントのFuncAを確認してみると、コールされている関数のうち、下記ソース中のFuncBが呼び出し関係図に出力されていませんでした。
コールしているものを全て図に出力したいのですが、これによって「何故か出力されない関数がある」ということに気づきました。
FuncBのように出力されないのを回避するには、なにか設定等が必要なのでしょうか?
ご存知の方がいらっしゃいましたら、ご教授頂きたく宜しくお願い致します。
なお、FuncB()自体は、ドキュメントに出力されていました。
ソースコード抜粋
cpp
1("..."はコードの中略です) 2namespace XXX { 3 public ref class Form1 : public System::Windows::Forms::Form 4 { 5 ... 6 void FuncA(void) 7 { 8 ... 9 try { 10 ... 11 while( ... ) 12 { 13 ... 14 if (...) 15 { 16 ... 17 } 18 else if( ...) 19 { 20 if(...) 21 { 22 ... 23 24 if(...) 25 { 26 if (...) 27 { 28 FuncB(); 29 } 30 } 31 else 32 { 33 FuncB(); 34 } 35 } 36 FuncB(); 37 } 38 } 39 } 40 ... 41 } 42 ... 43 void FuncB() 44 { 45 ... 46 } 47 ... 48 }; 49}
Doxyfile変更箇所
Doxyfile
1EXTRACT_ALL = YES 2EXTRACT_PRIVATE = YES 3EXTRACT_PACKAGE = YES 4EXTRACT_STATIC = YES 5EXTRACT_LOCAL_METHODS = YES 6HAVE_DOT = YES 7CALL_GRAPH = YES 8CALLER_GRAPH = YES 9 10# 回答を受け変更 11DOT_GRAPH_MAX_NODES = 10000 12MAX_DOT_GRAPH_DEPTH = 1000 13CPP_CLI_SUPPORT = YES 14 15# 別途追加で行った変更 16EXTRACT_PRIV_VIRTUAL = YES 17EXTRACT_ANON_NSPACES = YES
追記
Doxygen 最新版へ
インストールされていたDoxygenが旧Ver(1.8.14)だったため、最新版(1.8.17)にバージョンアップ。
それに伴い、「doxygen -u」でDoxyfileをバージョンアップ。
同クラス内の関数だと出力されない?
Form1が記述されているForm1.hの別の関数をチェックしてみたところ
cpp
1("..."はコードの中略です) 2namespace XXX { 3 public ref class Form1 : public System::Windows::Forms::Form 4 { 5 ... 6 void FuncX() {...} 7 void FuncY() { 8 ... 9 FuncX(); 10 ... 11 } 12 ... 13 }; 14}
のように、FuncA,FuncBと同様なケースの場合、FuncYの呼び出し関係図に、FuncXが表示されていないことがわかりました。
同クラス内の関数をコールしている場合、呼び出し関係図にその関数は記載されないのでしょうか……?
回答2件
あなたの回答
tips
プレビュー