ソースコードを読むときに捗る3つの方法
どこかからダウンロードしてきたコードや、なにかのプロジェクトに参加し誰かのコードを読む。
ソースコードを読むということはよくありますよね。なにかの関数や変数がコード上のどこにあるか、どこで参照しているか知りたい。そんなときに使える方法です。
1. find と grep を組み合わせて使う方法
原始的な find を grep を使う方法です。
前はよく使っていましたが、たいていの環境で使えますので覚えておいて損はないです。
C言語の場合
$ find . -name "*.[ch]" | xargs grep hogehoge
拡張子 c または h のファイルを検索し、 grep で hogehoge という symbol
検索します。
C++ の場合
拡張子が cpp なので、
$ find . -name \*.cpp -or -name \*.h | xargs grep hogehoge
cpp または h 拡張子のコードから hogehoge を検索します。 -or という使い方を知らなかったので助かりました。
2. GNU global を使う方法
GNU global は、ソースコードの関数や変数のタグをつけるプログラムです。
linux や POSIX準拠システムで使えます。
機能は豊富でクロスリファレンスを html を吐き出したり、 Emacs や vim と連携したりもできます。
ここではコマンドラインで調べる方法を説明します。
インストール
Ubuntu では、
$ sudo apt-get install global
cygwin では、
ソースコード( http://www.gnu.org/software/global/download.html )からビルドするといけます。
準備
$ cd ソースコードのあるディレクトリ $ gtags -v
v オプションは処理中の画面を出力するだけですのでなくてもOK
使い方
$ global hogehoge
でhogehogeの定義箇所を検索
$ global -r hogehoge
で呼び出し箇所を検索
3. git grep を使う方法
git という分散バージョン管理システムを使います。ここでは検索のために使用しますので別のバージョン管理を使っていても大丈夫です。
インストール
ubuntu 11.04 の場合は、 git というパッケージ名です。
(ubuntu の場合のパッケージ名は、昔は、git-core でした)
$ sudo apt-get install git
gitへの登録
下記コマンドだけ覚えておけば git 自体は知らなくても使えます。
$ cd ソースファイルのあるディレクトリ $ git init $ git add .
調べかた
$ git grep main -- *.cpp
とか
$ git grep -e "#if" --and "_WIN32" -- *.cpp -- *.h
といった感じで使えます。
また、該当ディレクトリに移動して、gitp grep すればその配下が検索対象になります。
快適にコードを読みましょう〜。