仕事で関数一覧を取得しなければいけないことになって探してみると、ctagsというツールを見つけました。
ctags日本語対応版
とりあえず、『Win32版(バイナリのみ) (ec58j2w32bin.zip 162,098 byte)』と書いてあるリンクをクリックしてダウンロードし、解凍したフォルダの中にあるctags.exeを『C:\Windows』に置く(システム環境変数のPATHが通ってるところならどこでもいい)。これで、コマンドプロンプトでctagsが使えるようになった。
とりあえず、試しにjQuery(非圧縮版)を置いたフォルダにて『ctags -R –languages=javascript –javascript-kinds=f -x > jquery.txt』と入力して実行すると、同じフォルダ内に下記のテキストファイルができた。
jquery.txt
開いてみると確かに関数一覧ができています(完全じゃないですけどね。これはJavaScript特有の問題だと思います。JavaScript以外のライブラリで試すべきでした)。ただ、区切りが数の定まっていない半角スペースということもあって、扱いづらそうです。もう少し扱いやすいように、これをタブ区切り(TSV)にする正規表現置換を考えてみました。
先ほどのファイルを見てみると、それぞれの行は左から
『関数名』『1つ以上の半角スペース』『function』『3つの半角スペース』『行番号』『1つの半角スペース』『ファイル名』『1つの半角スペース』『関数宣言行の文字列(半角スペース含む)』となっています。そこで、半角スペースで区切ってあるところは半角スペースの数を気にせず正規表現で『\s+』と考え、それ以外は『[^\s]+』と考えることにしました。自分が使っているNotepad++では置換する際に正規表現にチェックをいれ、下記のようにするとうまくいきました。
検索文字列:([^\s]+)\s+([^\s]+)\s+([^\s]+)\s+([^\s]+)\s+(.+) 置換文字列:\1\t\2\t\3\t\4\t\5
\1や\2は検索文字列で()で囲んだ文字列にあたります。エディタによっては、\1ではなく$1かもしれません。
とりあえずこれで下記のタブ区切りのファイルができました。
jquery_tab.txt
タブ区切りにすると、全て選択してコピーしてExcelに貼り付けるとちゃんとセルごとに分かれてくれるのでとても便利です。
コメント