Personal tools
You are here: Home ブログ matsuyama globalを実際につかってみた
Document Actions

globalを実際につかってみた

バグ取りも噛ねて製品のソースコードの構造を理解せよとの命令が出たので、最近覚えたglobalを早速使ってみました。まずはG*ファイルを生成させるために、ソースコードディレクトリのルートで

% gtags -v

としてG*ファイルを生成させます。それで、例えばHogeクラスが定義されてるファイルってどこだろう、ということになれば

% global Hoge
path/to/Hoge

で一発で出ますし、それの中身を確認したいということになれば、Emacsからglobalを使うか、以下のようにコマンドします。

% global -x Hoge | less -T-

tでnext tag、Tでprevious tagです。:nと:pで操作するのではないので勘違いしないようにしてください。ただ、この方法だと定義周辺のコンテキストを確認できないようです。対策としては以下のようにファイル全体をlessする方法があります。

% global Hoge | xargs less

伝家の宝刀、xargsです。これはstdinを適当にsplitしてcommandに引き渡します。これによって、lessで:nで次のファイルにいったり:pで前のファイルにいったりすることができるようになるのです。ただこの方法では該当行まで飛んでくれないので、かなり不便です。代替策として以下のように根性をだしてlessする方法があります。

% global -x Hoge | awk '{ print "+"$2"G", $3 }' | xargs -n 2 less

qで次のファイル、C-cで終わりです。前のファイルには戻れませんが、そこそこ代替にはなっています。そうとう無茶していますが(笑

そもそもこの辺の処理はglobalが吸収すべきではないでしょうか。古き良きツールのgrepには-Cというマッチした行の周辺コンテキストを表示するコマンドがありますが、このような機能をglobalにもつけてほしいと思ってしまうのです。lessに丸投げにするにしても、lessのtags対応がいまいちなのでなんとも言えませんし。これはどうも自分で改造patch作ってmailinglistにpostしろという方向にベクトルが向いている雰囲気です。時間があるときになんとかしたいと思います。

Category(s)
program
linux
The URL to Trackback this entry is:
http://dev.ariel-networks.com/Members/matsuyama/coreblogentry.2006-07-20.8963268751/tbping
Add comment

You can add a comment by filling out the form below. Plain text formatting.

(Required)
(Required)
(Required)
(Required)
(Required)
This helps us prevent automated spamming.
Captcha Image


Copyright(C) 2001 - 2006 Ariel Networks, Inc. All rights reserved.