突然消失するかもしれないブログ

”とつきえブログ”

AndroidのソースコードにDoxygenを使ってみる

Androidのソースコード解析を効率化する方法の1つとしてDoxygenを使ってみようと思い立ちました。

そこで、Doxygenを実際にインストールして、Androidのソースコードにかけてみました。

Doxygenのインストールと使い方については、以下が参考になります。

○Windows版Doxygenのインストール方法
uhaku @Wiki – doxygen+graphviz

Doxygen公式ページDoxygen日本語ページ
設定ファイルに関するマニュアル

Let’s use doxygen!
Doxygen を使おう

2009-01-21 – It’s by design.
AndroidをDoxygenに掛けるときに注意したほうがいいこと。

実験環境は以下の通りです。

・Debian lenny化済み玄箱Pro + doxygen 1.5.6-2 + graphviz 2.20.2-3

・Windows XP SP3 + doxygen-1.5.8-setup.exe + graphviz-2.20.3.1.msi

DebianならDoxygenのインストールはとても簡単です。これだけです。

apt-get install doxygen graphviz

Windowsについては、uhaku @Wiki – doxygen+graphvizを参考にすればとても簡単です。

Windows版では、Doxygen GUI frontendというGUIで設定ファイルの作成からソースコード解析の実行まで一通り行えます。

Unix版では、以下のようにデフォルトの設定ファイルを自動的に生成させたあと、適宜、設定内容をカスタマイズします。

# Doxygenの設定ファイルを自動生成する。
$ doxygen –g doxygen.conf

# ~ doxygen.confを適宜変更する ~

# Doxygenでソースコード解析を実行する。
$ doxygen doxygen.conf

Androidのソースコード(今回はhardware/ril)にdoxygenをかけるのに必要な設定ファイルの変更内容(変更点だけ)は以下の通りです。

# Project
PROJECT_NAME           = Android
## Doxygenの解析結果を出力するディレクトリを指定します。適宜変更して下さい。
OUTPUT_DIRECTORY       = /usr/local/android/output
CREATE_SUBDIRS         = YES
OUTPUT_LANGUAGE        = Japanese

# Build
EXTRACT_ALL            = YES
SHOW_DIRECTORIES       = YES

# Messages
WARN_LOGFILE           = doxygen.log

# Input
## Doxygenの解析対象とするディレクトリを指定します。適宜変更して下さい。
INPUT                  = /usr/local/android/mydroid/hardware/ril

RECURSIVE              = YES
EXCLUDE_PATTERNS       = */.repo/* */.git/*
SOURCE_BROWSER         = YES

# HTML
## Debian lennyのdoxygenのバージョンがちょっと古いようで生成されるcssが気に入らなかったので、Windows版Doxygen 1.5.8で生成されたcssを流用しています。指定しなくても問題ありません。好みの問題なので。。。
HTML_STYLESHEET        = doxygen.css
GENERATE_TREEVIEW      = ALL

# LaTex
GENERATE_LATEX         = NO

# Preprocessor
## 今回はまったのがココ。SEARCH_INCLUDE=YESにして、INCLUDE_PATHの設定を適切に行ったつもりでも、なぜか、関数が定義されているソースコードへのリンクが正しく生成されません。
やはり、Androidのソースコード全体のディレクトリをINPUTに指定しないとだめなんでしょうか?…

SEARCH_INCLUDES        = NO

# External
ALLEXTERNALS           = YES

# Dot
HAVE_DOT               = YES
CALL_GRAPH             = YES
CALLER_GRAPH           = YES

# Search
## phpが使用できるWebサーバがあればキーワード検索できるようになります。指定しなくても問題ありません。
SEARCHENGINE           = YES

Androidのソースコードは全体で約2.3GB(.gitの管理情報含め)あるので、ソースコード全体にDoxygenをかけるとソースコード解析の処理にとんでもない時間がかかります。(数時間で終わるだろうか?)

そこで、今回は、Androidのソースコードの一部を指定してみたのですが、SEARCH_INCLUDEだけは無効にしないとだめでした。

ちなみにこちらがDoxygenの出力結果。

image

視覚的に関数間の呼び出す、呼び出される関係が把握できるようになるので、ソースコード解析の一助になると思います。

image

残る問題は、約2.3GBにも上るAndroidのソースコードをDoxygenで快適に解析できる高性能なマシンをどうやって用意するかです。

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。