この記事の目標
クラス図を自動生成できるツールDoxygenをご紹介します。過去に紹介したUMLDocletとの違いは、Doxygenはコールグラフを追加で出力することができることです。
[広告]関連書籍
手順
環境構築を簡単にするため、Docker上でDoxygenを実行します。具体的な手順は省略しますが、Dockerを使わずにDoxygenを利用することも可能です。
以下、Dockerのインストールは完了している前提で進めます。
作業用フォルダの作成
好きな場所に1つフォルダを作成してください。Docker上でDoxygenを実行するうえで、入出力フォルダとして使用します。
本記事では下記の場所にフォルダをつくります。以下、「作業用フォルダ」と呼びます。
C:\Users\[ユーザ名]\Desktop\doxygen
DoxygenのDockerイメージを作成する
Doxyfileをコピーする
下記GitHubリポジトリからDockerfileをダウンロードし、作業用フォルダ直下に配置します。
配置先: C:\Users\[ユーザ名]\Desktop\doxygen\Dockerfile
GitHubリポジトリからファイルをダウンロードする方法は、大きく下記の2通りあります。
- Gitをインストールして、git cloneコマンドを使う
- Code > Download ZIP をクリックしてzipファイルでダウンロード
Dockerイメージをビルドする
コマンドプロンプトを開き、下記コマンドを実行します。
作業用フォルダに移動した後、カレントディレクトリにあるDockerfileを使って「docker-doxygen」という名前のDockerイメージを作成するコマンドです。
cd C:\Users\[ユーザ名]\Desktop\doxygen docker build -t docker-doxygen .
Doxyfileの作成
Doxygenの設定ファイルであるDoxyfileを作成します。
Doxyfileの新規作成
下記コマンドを実行します。作業用フォルダ直下にデフォルトのDoxyfileが出力されます。
docker run --rm -v C:\Users\[ユーザ名]\Desktop\doxygen:/tmp/Doxygen ^ docker-doxygen doxygen -g /tmp/Doxygen/Doxyfile
出力先: C:\Users\[ユーザ名]\Desktop\doxygen\Doxyfile
「docker run ~ docker-doxygen」は先ほど作成したDockerイメージを起動するコマンド、
それに続く「doxygen -g /tmp/Doxygen/Doxyfile」はDoxyfileを作成するコマンドです。
Doxyfileの編集
Apache Commons CSVのクラス図やコールグラフを生成してみたいと思います。デフォルトのDoxyfileから下記の設定を変更します。
- Doxyfileのエンコード ※修正不要な場合もあります
DOXYFILE_ENCODING = SJIS # 元々はUTF-8
- プロジェクト名
PROJECT_NAME = "Apache Commons CSV" # 元々は空
- 出力先フォルダ
OUTPUT_DIRECTORY = /tmp/Doxygen/result/ # 元々は空
- 出力言語
OUTPUT_LANGUAGE = Japanese # 元々はEnglish
- 全ファイルからクラス図やコールグラフを生成する
EXTRACT_ALL = YES # 元々はNO
- 全メソッドからクラス図やコールグラフを生成する
EXTRACT_PRIVATE = YES # 元々はNO
EXTRACT_PACKAGE = YES # 元々はNO
EXTRACT_STATIC = YES # 元々はNO
- クラス図やコールグラフを生成するソースコードのフォルダ
INPUT = /tmp/Doxygen/commons-csv/src/main/ # 元々は空
- 入力ファイルのエンコード ※修正不要な場合もあります
INPUT_ENCODING = SJIS # 元々はUTF-8
- ソースコードのフォルダのサブフォルダからも読み込む
RECURSIVE = YES # 元々はNO
- LaTeXのファイルを出力するか
GENERATE_LATEX = NO # 元々はYES
- dotを使用可能にする ※クラス図やコールグラフの描画に必要
HAVE_DOT = YES # 元々はNO
- UMLの見た目にする
UML_LOOK = YES # 元々はNO
- コールグラフを出力する
CALL_GRAPH = YES # 元々はNO
CALLER_GRAPH = YES # 元々はNO
- dotのパス
DOT_PATH = /usr/bin/dot # 元々は空
- コールグラフの呼び出し階層数
MAX_DOT_GRAPH_DEPTH = 2 # 元々は0(無制限)
Doxygenの実行
クラス図やコールグラフを生成するソースコードを配置
下記GitHubリポジトリからApache Commons CSVのコードをダウンロードし、作業用フォルダの直下に配置します。
配置先: C:\Users\[ユーザ名]\Desktop\doxygen\commons-csv
Doxygenの実行
下記のコマンドを実行します。
docker run --rm -v C:\Users\[ユーザ名]\Desktop\doxygen:/tmp/Doxygen ^ docker-doxygen doxygen /tmp/Doxygen/Doxyfile
出力先: C:\Users\[ユーザ名]\Desktop\doxygen\result ※Doxyfileで指定
「docker run ~ docker-doxygen」は先ほど作成したDockerイメージを起動するコマンド、
それに続く「doxygen /tmp/Doxygen/Doxyfile」はdoxygenでクラス図やコールグラフを生成するコマンドです。
実行結果
下記ファイルをブラウザで開くと、トップページが開きます。
C:\Users\[ユーザ名]\Desktop\doxygen\result\html\index.html
リンクを辿ってCSVFormatクラスのページを開くと、下記のようなクラス図が表示されます。
Doxygenでは、UMLDocletで生成していたパッケージ単位のクラス図は生成できないようです。
CSVFormat#printRecordメソッドを見ると、コールグラフが表示されます。DoxyfileのMAX_DOT_GRAPH_DEPTHを2に設定したので、呼び出し階層2回分のグラフになっています。
まとめ
Doxygenを使ってクラス図やコールグラフを出力する方法を紹介しました。
パッケージ単位のクラス図が欲しい場合はUMLDoclet、コールグラフが欲しい場合はDoxygenといった使い分けができそうです。
コメント