2013/05/04
KAICHO: s_naray[at]yahoo[dot]co[dot]jp
※スパムメール対策のため捻ってある

Sanaly - Source code ANALYsis web front end for GNU Global (English)

■概要

Sanalyは、ソフトウェアのソースコードを読んだり解析したり調査したりするための、 Webフロントエンドです。 これは単なるフロントエンドであり、バックエンドとして GNU globalを利用しています。

■Sanalyトップページのスクリーンショット

Sanalyは左右2つのウィンドウから構成されます。左はソースコードを展開するツールと GNU Globalによって実際に展開されたソースコード群、右はユーザがカスタマイズ 可能なメインページです。
ソースコードを展開するには、そのコードのURL(末尾がsrc.rpm、tar.gz、tar.bz2など) を左上のボックスに貼り付け、"Ext"ボタンを押すだけです。これにより、 SanalyはGNU Globalを起動し、展開したコードへのリンクを左ウィドウに追加します。

■ダウンロード

パッケージ名 SRPMパッケージ RPMパッケージ(for both RHEL5/6)
Sanaly sanaly-0.6-1.src.rpm sanaly-0.6-1.noarch.rpm
geturllist geturllist-0.3-1.src.rpm geturllist-0.3-1.noarch.rpm

geturllistは、右側の"search"ボックスを利用する際にSanalyが使用する urllist を アップデートするための小さなツールです。これはインストール必須のツールでは ありませんが、一週間に一度 urllist を最新のものに update するためにインストール するとよいでしょう。

これとは別に、特別なGNU Globalを用意しました。

パッケージ名 元ソースコード SRPMパッケージ RPMパッケージ
安定版 GNU Global GNU global Download page global-6.2.12-13.src.rpm global-6.2.12-13.x86_64.rpm(for EL5)
global-6.2.12-13.el6.i686.rpm(for EL6)
global-6.2.12-13.el6.x86_64.rpm(for EL6)
開発版 global-6.3.1-13.src.rpm global-6.3.1-13.x86_64.rpm(for EL5)
global-6.3.1-13.el6.i686.rpm(for EL6)
global-6.3.1-13.el6.x86_64.rpm(for EL6)

このglobalは、オリジナルのglobalに存在しない、次に挙げる拡張機能を持っています。

  1. 追加でいくつかの言語をパース可能

  2. 文字列・リテラルの色づけ
    htagsでは、全ての文字列は色づけされます。

  3. mime/ファイルタイプで言語を判定可能
    オリジナルのGNU Globalはファイルの拡張子でのみ言語を判定していましたが、 この版ではmimeタイプまたはファイルタイプで言語を判定可能で、これにより 拡張子が無いファイルも判定できるようになりました。 /etc/gtags.conf.sanaly内の builtin-parserを以下に示します。 「mimetypemap]「filetypemap」行に注目してください。これらは、 /usr/bin/fileが返す文字列を元に実装されています。

    builtin-parser:\
            :langmap=c\:.c.h:\
            :langmap=yacc\:.y:\
            :langmap=asm\:.asm.ASM.Asm.s.S:\
            :langmap=java\:.java:\
            :langmap=cpp\:.c++.cc.hh.cpp.cxx.hxx.hpp.C.H:\
            :langmap=php\:.php.php3.phtml:\
            :langmap=python\:.py.pyx.pxd.pxi.scons:\
            :langmap=ruby\:.rb:\
            :langmap=perl\:.pl:\
            :langmap=sh\:.sh.SH.bsh.bash.ksh.zsh:\
            :mimetypemap=python\:text/x-python:\
            :mimetypemap=python\:application/x-python:\
            :mimetypemap=ruby\:text/x-ruby:\
            :mimetypemap=ruby\:application/x-ruby:\
            :mimetypemap=perl\:text/x-perl:\
            :mimetypemap=perl\:application/x-perl:\
            :filetypemap=c\:ASCII C program text:\
            :filetypemap=sh\:POSIX shell script text executable:\
            :filetypemap=sh\:Bourne-Again shell script text executable:\
            :filetypemap=sh\:Bourne shell script text executable:\
            :filetypemap=python\:python script text executable:\
            :filetypemap=python\:Python script text executable:\
            :filetypemap=python\:a python script text executable:\
            :filetypemap=python\:a /usr/bin/python script text executable:\
            :filetypemap=python\:a /usr/bin/env python script text executable:\
            :filetypemap=ruby\:ruby script text executable:\
            :filetypemap=ruby\:a /usr/local/bin/ruby script text executable:\
            :filetypemap=ruby\:a /usr/bin/ruby script text executable:\
            :filetypemap=ruby\:a /usr/bin/env ruby script text executable:\
            :filetypemap=perl\:perl script text executable:\
            :filetypemap=perl\:a /usr/bin/perl script text executable:\
            :filetypemap=perl\:a /usr/bin/env perl script text executable:
    

ソースコード・パッチを入手するための、SRPMの展開方法を書いておきます。 以下のコマンドで、/usr/src/redhat(RHEL5)または/root/rpmbuild(RHEL6)以下に ソースコード、パッチ、specファイルが展開されます。
# rpm -Uvh global-6.2.12-13.src.rpm
これとは別に、以下のコマンドで、パッチとspecファイルが カレントディレクトリに展開されます。
# rpm2cpio global-6.2.12-13.src.rpm | cpio -di

■インストール方法

このツールは、主にRHEL5/6、CentOS5/6及びOracleLinux5/6用です。 それ以外のディストリビューションにはインストールしたことがないため、 もしもそれらにインストールして成功または失敗したら教えて下さい。

全てのパッケージをインストールするなら、以下のように実行してください。
 # rpm -Uvh sanaly-0.6-1.noarch.rpm global-6.2.12-13.el6.x86_64.rpm 

上で述べたように、geturllistはインストール必須ではありません。

■使い方

インストールしたLinuxサーバ(=webserver)の "http://webserver/sanaly/" に Webブラウザでアクセスしてください。

■設定ファイル群

Sanalyの設定ファイルは以下の通りです。

■ライセンス

■Support

サポートBBSまたはe-mailをご利用ください。