Seaside Laboratory

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 を再実行する。

ヘッダーファイルの依存関係。見づらい場合は MAX_DOT_GRAPH_DEPTH を調整。

コンパイラは不必要なヘッダーファイルを読み込んでも注意してくれないので、ドキュメントツールを使って最適化するのがヨサゲ。