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 CentOS 5/6/7)
Sanaly sanaly-0.7-4.src.rpm sanaly-0.7-4.noarch.rpm
geturllist geturllist-0.3-1.src.rpm geturllist-0.3-1.noarch.rpm

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

これとは別に、特別なGNU Global(と開発版にはpython-pygments)を用意しました。

パッケージ名 元ソースコード SRPMパッケージ RPMパッケージ
安定版 GNU Global GNU global Download page global-6.2.12-13.src.rpm EL5 global-6.2.12-13.x86_64.rpm
EL6 global-6.2.12-13.el6.i686.rpm
global-6.2.12-13.el6.x86_64.rpm
開発版 global-6.3.3-15.src.rpm EL5 global-6.3.3-15.x86_64.rpm
EL6 global-6.3.3-15.el6.i686.rpm
global-6.3.3-15.el6.x86_64.rpm
EL7 global-6.3.3-15.el7.centos.x86_64.rpm
python-pygments pygments get it page python-pygments-1.6-3.src.rpm EL6/7 python-pygments-1.6-3.noarch.rpm
※pygmentsは、globalの字句(?)解析を助けてくれるpythonライブラリ。globa-6.3.2から対応。 なければctagsを使うが、あるともうちょっと賢く解析する。そのかわりかなり遅い上に、 python-2.6以上が必要なため、実際EL5ではダメで、EL6以上でないと使えない。

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

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

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

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

    builtin-parser-additionals:\
            :langmap=python\:.py.pyx.pxd.pxi.scons:\
            :langmap=ruby\:.rb:\
            :langmap=perl\:.pl:\
            :langmap=sh\:.sh.SH.bsh.bash.ksh.zsh:\
            :langmap=cpp\:.tjs:\
            :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=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(CentOS5)または/root/rpmbuild(CentOS6)以下に ソースコード、パッチ、specファイルが展開されます。
 # rpm -Uvh global-6.3.3-15.el6.src.rpm 
これとは別に、以下のコマンドで、パッチとspecファイルが カレントディレクトリに展開されます。
# rpm2cpio global-6.3.3-15.src.rpm | cpio -di

■インストール方法

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

全てのパッケージをインストールするなら、以下のように実行してください。 最初にpython-pygmentsパッケージを、次に残りのパッケージをインストールします。
 # rpm -Uvh python-pygments-1.6-3.noarch.rpm
 # rpm -Uvh sanaly-0.7-4.noarch.rpm global-6.3.3-15.el6.x86_64.rpm 

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

■使い方

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

■設定ファイル群

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

■ライセンス

■Support

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