Javaとかのソースコード読むときは、IntelliJとかでいい感じにタグジャンプできるんだけど、rubyとかpostgresとかみたいなCのプロジェクトを読むときは何かいけてる方法ないかなあと思っていた。
この辺りを参考に、githubやらのソースコードを管理していたんだけど、それとGtags(htags)を組み合わせてソースコードリーディングが捗った話
- http://blog.kentarok.org/entry/2014/06/03/135300
- http://qiita.com/b4b4r07/items/9e1bbffb1be70b6ce033
下準備
必要なコマンドを用意
- ghq https://github.com/motemen/ghq
- Githubなどのリポジトリのローカルクローンをいい感じに管理できる。
- fzf https://github.com/junegunn/fzf
- percolみたいに、いい感じにcliで曖昧検索できる
- GNU global https://www.gnu.org/software/global/
- ソースコードにタグ付けして、定義にジャンプしたりできる
-
htags
を使っていい感じにソースコードにリンクが貼られたhtmlを吐いたりできる。
いい感じのスクリプトを用意
下記のようなものを用意
# ghqのリポジトリのパスを曖昧検索で指定
SRC=$(ghq list | fzf)
# htagsのファイル郡を保存するディレクトリ。ghqのパスに準拠することで衝突を防ぐ。
TARGET=${HOME}/.docs/${SRC}
# なけれればhtagsのファイル郡を作成
if [ ! -d "${TARGET}" ]; then
pushd ${HOME}/src/${SRC}
mkdir -p ${TARGET}
htags -ansv ${TARGET}
popd
fi
open ${TARGET}/HTML/index.html
これをzshのfunctionにするとか、PATHに実行ファイルとして置くとかしてすぐ実行できるようにすると便利。
仮にsrc
で上記が呼べるようにした。
使ってみる
rubyのソースコードをブラウザで読めるようにする。
ソースコードのクローン
$ ghq get https://github.com/ruby/ruby.git
いい感じに見る
用意したスクリプトを呼ぶ
$ src
リポジトリの曖昧検索が始まる
ruby/ruby
を指定してhtagsのファイル郡が作成されるのを待つ
ファイルが作成し終わったらブラウザで開く
リンクからジャンプできて便利
一度タグファイルなどを作っておけば以降はopen
するだけなのですぐ開く。