GNU Global

| | コメント(0) | トラックバック(0)

Lemmatizer ライブラリのソースコードの解析のために GNU Global を使っている。このツールは,ソースコードの関数や変数がどこで定義されているか,どのファイルで利用されているかを縦横に渡り歩いてブラウズする手段を提供する。grep で必死こいて探すのに比べるとその利便性は天と地ほどの差がある。C, C++, Yacc, Java と PHP4 のプログラミング言語をサポートしている。

Global はコマンドラインのみならず,GNU Emacs,Vim のほか,HTML 変換機能により,ブラウザによってハイパーリンクでソースコード探索できるインタフェースをサポートしている。今日は,FreeBSD で GNU Global 5.7.1 をインストールし,HTML ベースで利用する方法をメモしておく。

FreeBSD には Global の ports が用意されており,導入は簡単である。"cd /usr/ports/devel/global && make install clean" 一発でインストールできる。

ここでは AOT の Source 配下にある .c, .cpp と .h を抽出し,Global で処理する例を説明する。

  1. まずはソースコードの抽出。もともとの AOT ソースの場所を $RML/Source,Global のデータを作成するディレクトリを ~/src/aot とする。
  2. % cd $RML/Source
    % find . -name "*.c" -or -name "*.cpp" -or -name "*.h" > list
    % tar cf - `cat list` | ( cd ~/src/aot ; tar xvf - )
    

  3. gtags コマンドを発行してタグ・データベースを作成する。GPATH, GRTAGS, GSYMS, GTAGS の 4 ファイルが生成される。
  4. % cd ~/src/aot
    % gtags -v
    

  5. htags コマンドで HTML データを作成する。

    • ここでは,検索用の CGI プログラムを http://web-server-host/cgi-bin/global.cgi で,ブラウザからアクセスできるようにしよう。http://web-server-host/ は Web サーバのドキュメントルート URI の例である。実際の URI で読み替える必要がある。同様に,以下のコマンドラインで指定している cgi-bin,HTML 出力のディレクトリについても,運用で決めた場所で読み替えていただきたい。

    • 以下の指定オプションは -a: アルファベット・インデックス,-f: 検索フォーム,-n: 行番号表示,-F: フレーム表示,-I: アイコンリンク使用,-s: シンボルにもアンカー付与,-x: XHTML,-T: ファイルリストを <table> タグ付,-t: タイトルである。

    • オプションに --suggest を指定すると,初心者用のお勧めとして開発者が設定したオプション・セットが選択される。これも十分満足できるものと思う。ただし,5.7 未満の古いバージョンではサポートされていないようである。

    • HTML を生成したら,gtags で作成したタグ・データベースをそのディレクトリ直下にコピーしておく。CGI 検索用である。
  6. % cd ~/src/aot
    % su -m
    # mkdir -p /usr/local/www/apache22/data/aot
    # htags -afnFIsxT -S /usr/local/www/apache22/cgi-bin \
      -t 'AOT Source Tour' /usr/local/www/apache22/data/aot
    # cp G[P-T]* /usr/local/www/apache22/data/aot
    

  7. 生成された HTML データは,運用都合で別ディレクトリに移動すると,gtags で作成したデータベースを参照できず検索 CGI が動作しなくなるので注意しよう。もし Web サーバを外部公開している場合は,.htaccess の認証機能などで閲覧制限を設ける,検索エンジンからの収集を抑止するよう robots.txt に Global データ・ディレクトリを登録する,などセキュリティ上の工夫をしておくことをお勧めする(これは割愛)。

これで,ブラウザから "http://web-server-host/aot/HTML/" にアクセスすると,ソースコード探索ができるはずである。index.html は main 関数を有するプログラムの一覧,アルファベット索引,ソースコードのディレクトリを提示する。ここから,目的とするコードを探索する。

スナップショットを以下に示す。ソースコード中の関数やデータ構造にリンクが設定され渡り歩くことができ,検索ボックスにキーワードを入力して必要な部分を探すことができる。

gloal_ss.jpg

トラックバック(0)

このブログ記事を参照しているブログ一覧: GNU Global

このブログ記事に対するトラックバックURL: http://nox-insomniae.ddo.jp/cgi-bin/mt-tb.cgi/593

Comments


画像の中に見える文字を入力してください。

Profile

ISAO。システムエンジニア。昭和 30 年代を懐かしむオヤジ。ロシアに興味があります。
[more], [About our site]

Notice

この文書はフィクションであり,実在する個人,団体等とは一切関係ありません。

文書の記述内容は無保証です。不適切な表現があればコメントにてご指摘ください。

管理者が公序良俗に反すると判断したコメント,トラックバックは,断りなく削除される場合があります。

Links

About this entry

Written by isao at 2009年7月23日 01:56.

Previous: R. J. ウィンジェル『音楽の文章術』

Next: おっはー

Recent Entries in Main Index.
All Entries in Archive Index.

Web Pages

Powered by Movable Type 4.1