Doxygen latest release v1.5.9 - last update 14 Feb 2011

グラフと図

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

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

コマンドパスに "dot"ツールを指定していれば、設定ファイルで HAVE_DOTYES に設定することで、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_NODESMAX_DOT_GRAPH_DEPTH を使って、さまざまなグラフのサイズを制限できます。

HTML と RTF では、クラス図における要素は以下のような意味を持っています:

  • 黄色のボックスはクラスを示します。ボックスの右下角には、 そのクラスが隠れた基底クラスを持っていることを示す小さなマーカーが 付くことがあります。 クラス図において、木の最大幅は、現在、8 要素です。 木の幅がそれより大きくなると、いくつかのノードが隠れてしまいます。 ボックスがダッシュパターンで埋められている場合は、 継承関係は仮想的です。
  • 白いボックスは、クラスのドキュメントが現在表示されていることを示します。
  • 灰色のボックスは、ドキュメント付けされていないクラスを示します。
  • 暗青色の実線矢印は公開 (public) 継承を示します。
  • 暗緑色の破線矢印は限定公開 (protected) 継承を示します。
  • 暗緑色の点線矢印は非公開 (private) 継承を示します。

$\mbox{\LaTeX}$ では、クラス図における要素は以下のような意味を持っています:

  • 白いボックスは、クラスを示します。 ボックスの右下角のマーカーは、 クラスが隠れた基底クラスを持っていることを示します。 ボックスの枠が破線になっている場合は、仮想継承であることを示します。
  • 実線矢印は、公開 (public) 継承を示します。
  • 破線矢印は、限定公開 (protected) 継承を示します。
  • 点線矢印は、非公開 (private) 継承を示します。

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

  • 白いボックスは、クラス、構造体またはファイルを示します。
  • 枠の赤いボックスは、描かれているよりも 多くの矢印を持つノードであることを示します。 言いかえれば: このノードについては、グラフが切りつめられています。 グラフが時々切りつめられるのは、画像があまりにも大きくなりすぎるのを防ぐためです。 dot によって生成されるグラフについて、Doxygen は、生成される画像の幅を 1024 ピクセルまでに制限しようとしています。
  • 黒いボックスは、現在、クラスのドキュメントが表示されていることを示します。
  • 暗青色の矢印は、インクルード関係 (インクルード依存グラフ) または公開継承 (その他のグラフ) を示します。
  • 暗緑色の矢印は、限定公開 (protected) 継承を示します。
  • 暗赤色の矢印は、非公開 (private) 継承を示します。
  • 紫色の破線の矢印は、利用関係を示します。 その矢印の先は、関係を示す変数でラベル付けされています。 クラス B が クラス C のサブタイプであって、 クラス AC の型のメンバー変数 m を持つなら、 クラス A はクラス B を利用していることになります (たとえば、CB、B*、T<B>* など)。

以下のヘッダーファイルは、一つにまとまって、 Doxygen が生成する様々な図を示しています:

diagrams_a.h

#ifndef _DIAGRAMS_A_H
#define _DIAGRAMS_A_H
class A { public: A *m_self; };
#endif

diagrams_b.h

#ifndef _DIAGRAMS_B_H
#define _DIAGRAMS_B_H
class A;
class B { public: A *m_a; };
#endif

diagrams_c.h

#ifndef _DIAGRAMS_C_H
#define _DIAGRAMS_C_H
#include "diagrams_c.h"
class D;
class C : public A { public: D *m_d; };
#endif

diagrams_d.h

#ifndef _DIAGRAM_D_H
#define _DIAGRAM_D_H
#include "diagrams_a.h"
#include "diagrams_b.h"
class C;
class D : virtual protected  A, private B { public: C m_c; };
#endif

diagrams_e.h

#ifndef _DIAGRAM_E_H
#define _DIAGRAM_E_H
#include "diagrams_d.h"
class E : public D {};
#endif
ここ をクリックすると、Doxygen によって生成された HTML ドキュメントが表示されます
(ここでは、EXTRACT_ALL = YES が設定されています)。 のセクションに行く / インデックス に戻る

This page was last modified on 14 Feb 2011.
© 1997-2010 Dimitri van Heesch, first release 27 oct 1997.
© 2001 OKA Toshiyuki (Japanese translation).
© 2006-2011 TSUJI Takahiro (Japanese translation).
© 2006-2011 TAKAGI Nobuhisa (Japanese translation).