2009年11月27日金曜日

はてなに追加 MyYahoo!に追加 Googleに追加 del.icio.usに追加 livedoorClipに追加 Buzzurlに追加 GNU Global + emcas でソースコードドキュメント化

会社の後輩に教えてもらった方法。

ソースコードを読むとき普段はemacsを使ってちまちま検索してたんですが、
そんな苦労が一期に吹っ飛ぶ便利技

ソースコードのドキュメント化+tag付けして、可読性を上げましょうってことです。

ソースコードのドキュメント化と言えば
Doxygen
の存在は知ってたんですが、書式(?)があるっぽくてなかなか手が出せずにいました

教えてもらったGNU Globalってのは、
何も気にせず簡単にHTML化してくれて、tag付けまでやってくれる優れもの
対応言語:
  • C
  • C++
  • Yacc
  • Java
  • PHP4

php4って書いてるけど、php5でも大丈夫なのか?? ということでインストール
参考サイト
ソースコードを快適に読むための GNU GLOBAL 入門 (前編)

主要なディストリビューションなら特に気にせず、apt やyum 何かで入る模様
ubuntuでは。。

sudo apt-get install global
で終了。何とも簡単w

<emacsの設定>

参考サイト
42.5 タグジャンプ − gtags , global
以下を.emacsに追記
(autoload 'gtags-mode "gtags" "" t)
(setq gtags-mode-hook
      '(lambda ()
         (local-set-key "\M-t" 'gtags-find-tag)
         (local-set-key "\M-r" 'gtags-find-rtag)
         (local-set-key "\M-s" 'gtags-find-symbol)
         (local-set-key "\C-t" 'gtags-pop-stack)
         ))
(add-hook 'c-mode-common-hook
          '(lambda()
             (gtags-mode 1)
             (gtags-make-complete-list)
             ))
準備完了

別にemacsだけでなく、viでももちろんできます

<ソースコード解析>
…何ですが、対応言語でまともにかけるものがC言語phpのみ..orz
perlやjavascriptあたりがないのが痛いですが、一応追加もできる模様
http://q.hatena.ne.jp/1243320089
しかし
GNU flex用の入力ファイルは公開されていません。
面倒でも自力で書くしかないと思います。
GNU flex用の入力ファイルってやつを書けばいいらしいが、
存在すら始めて知ったので 何ナノかさえ分からん。。とりあえず今回はパスしてタグ付けw

やり方は簡単。ソースコード類があるディレクトリで
$ gtags
これで終了 GPATH GRTAGS GSYMS GTAGSこういうファイルがあればOK
これで、基本的なことはすべてできます。
  • ソースの関数一覧
    • global -f ソース名
  • 関数名から使っているソース一覧
    • global 関数名(-x オプションで詳細、正規表現も可)
  • 指定した関数を呼び出しているソース
    • global -r 関数名
  • etc..
詳細はマニュアルもしくは、先ほどの参考サイト見てくださいw

ってコマンドライン上からは、操作できるので、今度はemacs上から使ってみます。

先ほど設定したので
ソースファイルをemacsで開く, 調べたい関数のところへ移動して
M-tで定義されているところ、
M-rで参照元などが使えます。
includeなどで別ファイルを読み込んでいるときなどは、読み込んでいるファイルが解析されていれば
そのファイルを開いてくれます

<HTML化>
HTML化に関しては、オプションが多いので
ソースコードを快適に読むための GNU GLOBAL 入門 (後編)CommentsAdd Star
を参考に作ってみる
htags -ansx
そうすると、HTMLというディレクトリが作られてて、その中にhtmlファイルがあります。
これをブラウザで見ると、まぁ見やすいこと。

んで、テストとして手元にあって、対応言語のものを探す。
とりあえず、学生時代に書いた数値解析の練習ソースが出てきたのでこれでテスト。
SOR法のC言語ソース
SOR法についてはこちら
SOR法
C言語と言うかプログラミング自体始めてまだ1ヶ月も経っていない頃だ。。w

HTML化してブラウザ上で見た時









この様に解析したソースの一覧と、そのソースのmain一覧。
各ソースは、、










一見すると色付けしたemacsですが、変数やdefine、関数がリンクになってて
クリックすると使っている一覧が表示され、さらにクリックすると使っている箇所に飛べます










ホントこれ便利スギます。

ソースレビューしてもらうときはHTML化して渡せばいいし
人のソースを読むときは、同じくHTML化してブラウザで見るのもいいし
いつもの感覚でemacsで確認しながら編集なども可能。

人のソースを読む機会が多い人はかなり便利だと思います

grepはもちろんのこと、emacsのmoccur-grepより便利だと思います(ソースを読むっていう点においては)

ぜひお試しあれ

0 件のコメント:

コメントを投稿