1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

wslとDoxygen+ Graphvizでcppの詳細ドキュメントファイルを生成する

Last updated at Posted at 2025-06-05

✅ Doxygenで全体のクラス図を生成する方法

cppのクラス図を自動生成してほしいので、DoxygenをWSLを使用して生成してみることにしました。
以下説明。

🔸 1. 事前準備

(1) 必要なツール

  • Doxygen(必須)
  • Graphviz(DOT) → クラス図やコールグラフなどを画像として生成するのに必須

(2) インストール(Ubuntu/WSLの場合)

sudo apt install doxygen graphviz

Windows でも公式サイトからインストーラーを使えばOKです。


🔸 2. Doxygen設定ファイル(Doxyfile)を作成

doxygen -g

Doxyfile が生成されるので、以下の設定を行います。


🔸 3. Doxyfile設定例(重要ポイント)

【クラス図生成の必須設定】

HAVE_DOT            = YES
DOT_GRAPH_MAX_NODES = 100  # ノード数上限(多いと重いので注意)
CLASS_DIAGRAMS      = YES
UML_LOOK            = YES
CALL_GRAPH          = YES
CALLER_GRAPH        = YES

【全体の関係も生成したい場合(推奨)】

DOT_MULTI_TARGETS   = YES
INTERACTIVE_SVG     = YES  # SVGならブラウザで拡大縮小も便利

【日本語対応(推奨)】

OUTPUT_LANGUAGE     = Japanese

🔸 4. 実行

doxygen Doxyfile

🔸 5. 結果

  • html/ フォルダに index.html が生成されます。
  • そこから「クラス一覧」や「クラス階層図(Class Hierarchy)」を辿ると、クラス間の継承関係・依存関係がグラフィカルに表示されます。
  • Graphvizで生成されたUML風クラス図(SVG/PNG)もリンクで埋め込まれます。

✅ 生成される「全体クラス図」と「部分クラス図」

図の種類 内容
クラス階層図 全体のクラス継承ツリー(Base → Derived)
クラス図(個別) そのクラス単体のメンバ関係・継承関係・依存関係
ファイル依存関係図 ヘッダ・ソース間のinclude関係
コールグラフ 関数の呼び出し元・呼び出し先(設定次第で呼び出し元グラフも生成可能)

✅ 注意点

  • プロジェクトが大規模な場合、DOT_GRAPH_MAX_NODESを増やすと処理が重くなります。
    • 例: DOT_GRAPH_MAX_NODES = 1000 だと大量に生成されるので最初は 100 くらいで十分。
  • もし大きな全体図が重い場合は、個別のクラス図だけ出力する設定も可能です。
  • Graphvizが必須なのでインストール漏れに注意してください(Windowsなら環境変数の設定もお忘れなく!)。

✅ まとめ

✅ Doxygen + Graphviz でクラス図(UML風)も全体図も生成OK
CLASS_DIAGRAMS = YES で有効化
UML_LOOK = YES でUMLライクな見た目に
✅ 日本語コメントも表示可能
✅ 複雑な依存関係もGraphvizで綺麗に描画できる

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?