Q&A:Doxygenで自動的にクラス図・コラボレーション図(コミュニケーション図)・呼び出し関係図等を出力するには?

Q:Doxygenで自動的にクラス図・コラボレーション図(コミュニケーション図)・呼び出し図等を出力するには?

A:Graphviz を使用してソースコードから自動生成する。

構造を記述して出力される図については、下記を参照
『Q&A:Doxygenで構造を記述して各種UML図・メッセージシーケンスチャート・フローチャート等を出力するには?』


詳細

Graphviz を使用すれば、ソースコードから各種図を自動生成することができる。
(以下Doxygenコマンド・設定項目は親サイトにリンク)

Graphviz の設定

Graphviz をインストールし下記を設定する。

ここに記述していない設定項目等については、親サイトの図の生成・挿入を参照(フォント・画像フォーマット・dotツールの並行実行数 等)

クラス図・コラボレーション図(コミュニケーション図)

下記設定で、クラス図コラボレーション図(UML 2 以降:コミュニケーション図)を出力することが可能となる。

コラボレーション図の一部分を個別に設定するには、下記のコマンドを併用する。

呼び出し関係図・被呼び出し関係図

下記設定で、呼び出し関係図被呼び出し関係図を出力することが可能となる。

一部分を個別に設定するには、下記のコマンドを併用する。

ファイル依存関係図

下記設定で、ファイルの依存関係図を出力することが可能となる。

一部分を個別に設定するには、下記のコマンドを併用する。

出力例

各図の一部を抜粋したもの。(下記の設定で出力)

ファイル

inc_A.h

/// @file
/// ファイルの説明
#include "inc_B.h"

inc_B.h

/// @file
/// ファイルの説明

class.cpp

/// @file
/// ファイルの説明
#include "inc_A.h"

class Class_X {
public:
    int varPublic_X;
    void method_X() {
    }
};

class ParentClass {
private:
    int varPrivateParent;
protected:
    int varProtectedParent;
    Class_X class_X;
public:
    int varPublicParent;

    void methodParent() {
    	class_X.method_X();
    }
};

class ChildClass_A : ParentClass {
private:
    int varPrivateChild_A;
protected:
    int varProtectedChild_A;
public:
    int varPublicChild_A;

    void methodChild_A() {
        methodParent();
    }
};

class ChildClass_B : ParentClass {
private:
    int varPrivateChild_B;
protected:
    int varProtectedChild_B;
public:
    int varPublicChild_B;

    void methodChild_B() {
        methodParent();
    }
};

クラス階層図

クラス図・コラボレーション図(コミュニケーション図)

呼び出し関係図・被呼び出し関係図

ファイル依存関係図