Posts
Doxygen + Graphviz を使って呼び出し依存関係図を生成する
久しぶりに Doxygen でドキュメントを生成しようかと思ったら、使い方を忘れてしまっていたので備忘録として手順を書いておく。
Doxygen の使い方
まず、下記コマンドを実行してスケルトンとなる設定ファイルを生成。
doxygen -g
カレントディレクトリに Doxyfile という名前でファイルが出力されるので、エディタで開いてカスタマイズを行う。
変更が必要そうな主な設定は以下の通り。
| 項目名 | 意味 | 設定例 |
|---|---|---|
| PROJECT_NAME | プロジェクト名 | "Knuckle Fighter Maniax" |
| OUTPUT_DIRECTORY | ドキュメントの出力先 | "C:\My Program\doxygen" |
| OUTPUT_LANGUAGE | 出力言語 | Japanese |
| FULL_PATH_NAMES | 出力ファイル名をフルパスにする | NO |
| OPTIMIZE_OUTPUT_FOR_C | C 言語に最適化 | YES |
| EXTRACT_ALL | 全てを展開 | YES |
| INPUT | ソースファイルのパス | "C:\My Program" |
| INPUT_ENCODING | ソースファイルの文字コード | SHIFT_JIS |
| FILE_PATTERNS | 対象とするファイル | *.cpp *.h |
| RECURSIVE | サブディレクトリーも含める | YES |
| VERBATIM_HEADERS | ドキュメントにヘッダーを引用 | NO |
| GENERATE_TREEVIEW | ツリービューの利用 | YES |
| ENUM_VALUES_PER_LINE | 列挙型を行に並べる数 | 1 |
| GENERATE_LATEX | LATEX 版の出力 | NO |
修正が終わったら、コマンドの引数に設定ファイル名を指定して実行。
doxygen Doxyfile
出力先にディレクトリが自動で作成されるので、その中にある index.html を開く。

Graphviz の使い方
今回最大の目的はヘッダーファイルの依存関係を可視化することなので、Graphviz という別のグラフツールを使って依存関係を図として出力する。これを行うには Graphviz のインストールと Doxyfile への設定追加が必要になる。
| 項目名 | 意味 | 設定例 |
|---|---|---|
| HAVE_DOT | dot ツールの有無 | YES |
| DOT_NUM_THREADS | グラフ生成時のスレッド数 | 4 |
| UML_LOOK | 継承図を UML 風にする | YES |
| CALL_GRAPH | 呼び出し依存関係図の生成 | YES |
| CALLER_GRAPH | 呼び出し元依存関係図の生成 | YES |
| DOT_PATH | dot ツールの位置 | "C:\Program Files\Graphviz 2.28\bin" |
設定が終わったら Doxygen を再実行する。
コンパイラは不必要なヘッダーファイルを読み込んでも注意してくれないので、ドキュメントツールを使って最適化するのがヨサゲ。