emacsのebrowseパッケージの使い方

ソースコードを読む際に役立つのではと思い調べてみました。

一通り調べてみましたが、Doxygenの方が良いかもしれません。

ご参考までにまとめます。


1 ebrowseパッケージとは

C++のクラス構造をemacs上で閲覧するためのemacsパッケージです。

ebrowseプログラムでデータベースファイルを作成し、データベースファイルをemacsで開くことでクラス構造を閲覧できるようになります。

 

ebrowseコマンドとelispのebrowseパッケージからなります。

ebrowseコマンドはemacsパッケージに含まれています。

elispのebrowseパッケージはemacsに組み込まれております。

1.1 大規模なソースツリーには向かない

データベースファイルが大きくなると表示処理に時間が掛かってしまいます。(起動時とC-lキーによって表示処理は動作します)。

データベースファイルが10MBを越えると厳しいかもしれません。

LLVM/Clangの全ヘッダファイルをデータベースファイルに取り込むと17MB程度になります。

2 データベースファイルの作成

ebrowseコマンドで作成します。

ebrowseに直接ファイル一覧を渡すこともできますが、ファイル一覧が多くなるとシェルの引数文字列の制限に引っかかる為、一度ファイル一覧をファイルに落としてから、ebrowseに渡したほうが良いでしょう。

 

以下の例ではccファイルとhファイルをファイルに書き込み、ebrowseに渡しています。

$ find . -name "*.cc" > LIST
$ find . -name "*.h" >> LIST
$ ebrowse -f LIST

3 実行例

cppcheckのコードで試してみます。

ちなみにcppcheckはdoxygenに対応しているので、本来はそちらで閲覧すべきです。

3.1 TreeバッファとMemberバッファ

Treeバッファにクラスの一覧が表示されます。

インデントはクラスの継承関係を表しています。 

https://dl-web.dropbox.com/s/sz9gliwngsopo46/0001_ebrowse-Tree.png

クラスにカーソルを合わせてLキー vキーを押すことでMemberバッファに切り替わり、メンバ変数の一覧を見ることができます。

https://dl-web.dropbox.com/s/by2fmmfixqbjxyi/0002_ebrowse-Member.png

TABキーでTreeバッファとMemberバッファを切り替えます。

TreeバッファでTABキーを押した場合、その直前に開いていたMemberバッファの内容が表示される点に留意してください。

3.2 ショートカット

 

RETキー 定義場所のファイルを開く
TABキー TreeバッファとMemberバッファの切り替え
Lキー vキー メンバ変数を表示
Lキー Vキー staticなメンバ変数を表示
Lキー fキー メンバ関数を表示
Lキー tキー 定義された型を表示
Lキー Fキー staticなメンバ関数を表示
Lキー pキー メンバ変数、メンバ関数の表示を切り替える
Lキー nキー メンバ変数、メンバ関数の表示を切り替える

 

4 Doxygenの簡単な使い方

Doxyfileやdoxyfileがない場合はdoxygen -gで作成する必要があります。

doxygen/html/index.htmlをemacsのw3mパッケージで開くと良いでしょう。

$ doxygen -g
$ sed -i -e 's/^INPUT *= */INPUT = ./g' \
 -e 's/^RECURSIVE *= *NO/RECURSIVE = YES/g' \
 -e 's/^OUTPUT_DIRECTORY *= */OUTPUT_DIRECTORY = doxygen/g' Doxyfile
$ doxygen

cppcheckではdoxyfileが用意されており、Class Hierarchyのページは以下のようになります。

doxygen用のコメントにも対応しており、表示に時間がかからないので、こちらのが良いでしょう。

https://dl-web.dropbox.com/s/h8m2yhnzxcyou4a/0003_doxygen.png