2013年6月2日日曜日

[Tizen]Tizen Nativeアプリ(C++)でDoxygen+Graphvizを使ってJavaDoc形式コメント書いてみたり、クラス図継承関係確認してみた話

このエントリーをはてなブックマークに追加 はてなブックマーク - [Tizen]Tizen Nativeアプリ(C++)でDoxygen+Graphvizを使ってJavaDoc形式コメント書いてみたり、クラス図継承関係確認してみた話

TizenのネイティブアプリはC++で書かなければいけなくて、C++でJavaDoc的にソースコードにコメントを書こうと思って、何か良いのないかなーと調べてたら何やらDoxygenでそれ出来るよと。

ちなみにDoxygenですが以下のような特徴が有ります。

  • 対応言語はC++だけでなく、Java、Objective-C、Pythonなどがある。
  • Windows、Mac OS X、Linuxで動く。
  • 出力形式としてHTML以外にXMLやLaTeX、RTFもある。

あとGraphvizも使うとクラス図とそれぞれの依存関係が分かるとかでやってみました。

というか最初に言ってしまうとTizen公式サイトのAPIリファレンスもDoxygen+Graphvizを利用しているっぽかったので、結構デファクトスタンダードなのかもとか思ったり。(C++は全く詳しくない)

参考

なお、実施に当たり、以下のサイトを参考にさせて頂きました。

ソースコードを読むのに Doxygen + Graphviz が便利な件

Doxygen+Graphvizでクラス図を自動生成する

確認方法

本例ではTizenIDEでサンプルテンプレートとして用意されているTizenネイティブアプリのFrom-based Application→With SceneManagerにJavaDocコメントを追記して確認しました。(HelloWorldアプリ)

コメント追加

まず、HelloWrold.cppにJavaDoc形式でコメントを記述します。 なお、詳細なコメント記述形式は以下の公式サイトコードのドキュメント付けが分かりやすいです。

Doxygen、Graphvizのインストール

次にDoxygenのインストールします。Homebrewを利用。

brew install doxygen

Graphvizもインストール。こちらもHomebrewを利用。

brew install graphviz

簡単!

なお、Windowsもそれぞれの公式HPにインストーラーがあって簡単にインストール出来ます。

設定ファイル作成

次にクラス図を作成したいディレクトリに移動し、doxygenコマンドで設定ファイルを作成。

cd tizen_workspace/HelloWorld/
doxgen -g

なお、Windowsの場合、doxygenのインストールが終わるとすべてのプログラムにdoxygen wizardというプログラムがあり、それでどのフォルダのドキュメント作成をするか指定していきます。

上記実行後、カレントディレクトリにDoxyfileというファイルが生成されますので、これを編集して出力するドキュメントの詳細を記述します。私の環境ではとりあえず以下を設定。 オプションの詳細はDoxygenを参照下さい。

# 文字エンコーディング。
DOXYFILE_ENCODING = UTF-8

# 出力するファイルの言語
OUTPUT_LANGUAGE = Japanese

# 再帰的にソースコードを捜索するか。
RECURSIVE = YES

# Graphvizを利用するか
HAVE_DOT = YES

# Graphvizのパス。Homebrewでインストールした場合、PATHが通っているので設定しなくても良い。Windowsの場合、Graphvizのbinフォルダを指定する。
DOT_PATH =  

# LaTexを出力するか。
GENERATE_LATEX = NO

実行

設定が終わったら以下のコマンドでドキュメント出力。

doxygen

見てみる

カレントディレクトリにhtmlフォルダが作成されます。その下にindex.htmlが有るので表示。

open html/index.html

しっかり日本語で表示出来てます。

試しにJavaDocコメントを記載したHelloWorld.cppを見てみます。

おお、良い感じ。しっかり日本語表記も出来てます。

クラス階層を見るとこんな感じ。継承関係が分かりやすく表示されています。

上記画面でクラスをクリックすると該当クラスの詳細に遷移するとかも便利。あと左上の検索バーでクラス検索が出来るのですが、サジェスト検索出来るのも結構嬉しい機能。

おまけ

結構感動してJavaのプログラムにも実行してみましたが、クラス継承関係が図式で表示する事が出来て非常に有用だと感じました。

0 件のコメント:

コメントを投稿