flat7th

+ ソース解析方法メモ

created 2005-12-15 modified 2012-02-24 

ソース解析時につかうツールなどのメモ。
しばらく使わないと忘れるよ、(´д`;

etags

いにしえのタグづけ系。

etags *.[ch]
とか
find . -type f -name '*.[ch]' |xargs etags
ファイル TAGS ができる。

Emacsでの使い方

ジャンプしたい関数名にカーソルを置いて
M-. (M-x find-tag) でジャンプ
M-* (M-x pop-tag-mark) で戻る
調べるとき
M-x tags-search
M-, (M-x tags-loop-continue)

viの場合

ctags でファイル tags をつくる。viを起動したディレクトリのtagsファイルが使われるようだ。
Ctrl-] でジャンプ
Ctrl-T で戻る

gnu global

ctags とか etags の発展形、らしい。

個人的に、emacs に標準で組み込まれてない el を組み込む作業は、できればもう生涯やりたくない。なので HTML 出力が簡単そうだ。

コマンド
  • gtags
  • htags

基本:
ソースフォルダにて
gtags
htags
で、HTML/index.html ができる。

ソースフォルダに書き込みできない前提で、 ~/gtags/ソフト名/ 以下に html を作るには

mkdir -p ~/gtags/ソフト名/

cd ソフトのソースフォルダ
gtags ~/gtags/ソフト名/
htags -d ~/gtags/ソフト名/ ~/gtags/ソフト名/

とやって、
~/gtags/ソフト名/HTML/index.html
を見ればよい。



アウトライン系

Emacs の speedbar

windowが使える環境のemacsで
M-x speedbar
とやると、アウトラインのウィンドウが出る。

文字端末でもできるっぽいが使いづらい。


Emacsで一定以上インデントされた行を隠す

という機能がある。

隠れた行は"..."となるのだが、デフォでは隠す量をワンタッチで変更できなかったので、隠す量(インデント何桁以上を隠す)を変えてredraw buffer するマクロを書いてファンクションキーに当てていた。

えぇと...

c++-modeなどでファイルを開いた状態で
M-x outline-minor-mode
する。

メニューバーを表示してれば Outline メニューが追加されてるのでそこから何かできる。

prefixが "\C-c @" で
prefix + C-a
prefix + C-s
prefix + C-d
prefix + C-l
とかするとなんか動くポ。




エッフェル系のソースからドキュメント出すやつ

Eiffel

javadoc

Doxygen

最近は、もう graphviz 入れて Doxygen でソース出力ありにして、texじゃなくてHTML出力して、ブラウザで読む。
難点は、文字コードの不統一にキビシイことと、ドキュメント(HTML)出力に時間がかかること。




統合環境系

  • Emacs は統合環境だと言い張る件
  • Eclipse

凝ると重くなる。これ系が背負う業だ。




根本の話。

  • 名前付けが悪いソースは読むのが大変。
  • 役者と、セリフ。
    • どんな役者がいて、誰が誰にどんなセリフをしゃべるのか、を把握。
    • それを総合的に把握して初めて「作者はこの芝居で何を言いたいのか」がわかる。
    • 全体で「言いたいこと」がとっちらかってるプログラムは、読むのが大変。