Doxygenで自動生成されるグラフの読み方

doxygen-graph.png

グラフと図

Doxygen は、ビルドイン機能として、 C++ クラスの継承図の生成をサポートしてきました。

Doxygen は、graphviz の "dot" ツールを利用して、 より高度な図(ダイアグラム)とグラフを生成することができます。 Graphviz は、「オープンソース」かつクロスプラットフォームなグラフ描画ツールキットで、 http://www.graphviz.org/ にあります。

コマンドパスに "dot"ツールを指定していれば、設定ファイルで HAVE_DOT を YES に設定することで、Doxygen からそれを使うことができます。

Doxygen は "dot" ツールを利用して以下のようなグラフを生成します:

クラス階層を示すグラフが描画され、テキストでの説明も出力されます。 現在、この機能は HTML でのみサポートされています。
警告: 1つの基底クラスから多くのクラスが派生しているような 巨大なクラス階層では、生成される画像が大きくなりすぎていくつかの ブラウザでは扱うことができなくなるかもしれません。
ドキュメント付けされた各クラスについて、直接および間接的な継承関係を 示すグラフが生成されます。これは、ビルトインのクラス継承図生成機能を 無効にします。
ドキュメント付けされ、少なくとも他の1つのファイルをインクルードしている ファイルについて、インクルード依存関係のグラフが生成されます。    この機能は現在、HTML、RTFだけサポートしています。
(ヘッダー)ファイルについて、どのファイルにインクルードされているかを    示す被インクルード依存グラフが生成されます。
ドキュメント付けされたクラスや構造体について、 以下のことを示すグラフが描画されます:
基底クラスとの継承関係。
他の構造体やクラスとの利用関係 (たとえば、クラス A がクラス B 型のメンバー変数 m_a を保持していれば、 A は、m_a というラベルの付いた、B に向かう矢印を持ちます)。
CALL_GRAPH が YES であれば、各関数が    直接・間接に呼び出す関数を示す、呼び出し関係図が描画されます。
CALLER_GRAPH が YES であれば、各関数を    直接・間接に呼び出す関数を示す、被呼び出し関係図が描画されます。
 出力のカスタマイズを使って、どのグラフを表示するかを決められます。

DOT_GRAPH_MAX_NODES と MAX_DOT_GRAPH_DEPTH を使って、さまざまなグラフのサイズを制限できます。

dotで生成した場合

クラスを示す四角い箱の色の意味

dot ツールによって生成されるクラスにおける要素は以下のような意味を持っています:

白いボックス クラス、構造体またはファイルを示します。
枠の赤いボックス 描かれているよりも 多くの矢印を持つノードであることを示します。 言いかえれば: このノードについては、グラフが切りつめられています。 グラフが時々切りつめられるのは、画像があまりにも大きくなりすぎるのを防ぐためです。 dot によって生成されるグラフについて、Doxygen は、生成される画像の幅を 1024 ピクセルまでに制限しようとしています。
黒いボックス 現在、クラスのドキュメントが表示されていることを示します。

クラス間を示す矢印の意味

暗青色の矢印 インクルード関係 (インクルード依存グラフ) または公開継承 (その他のグラフ) を示します。
暗緑色の矢印 限定公開 (protected) 継承を示します。
暗赤色の矢印 非公開 (private) 継承を示します。
紫色の破線の矢印 利用関係を示します。 その矢印の先は、関係を示す変数でラベル付けされています。 クラス B が クラス C のサブタイプであって、 クラス A が C の型のメンバー変数 m を持つなら、 クラス A はクラス B を利用していることになります (たとえば、C は B、B*、T<B>* など)。
Bibliography

サポートサイト Wikidot.com