etherさん作成のCodeReadingWiki が、ソースコードを読むのにすごく便利で使わせて頂いていました。これはソースコードにglobalというツールでタグをつけ、Webブラウザから閲覧しながら必要に応じてソースコードにコメントを挿入できるソフトウェアです。
ソースコードはタグ付けされているので、簡単に変数や関数の定義位置に飛べたり、検索することができ、Webブラウザから閲覧できるので、複数の人とコメントを共有したりできます。
しかし、最近は更新が全然ないようなので、独自に少し改造しました。変更点は以下の通りです。
- 見た目を変更
- コメントはダブルクリックした行の下ではなく上に挿入
- 複数のプロジェクトに対応 → データベースの構造を変更したので互換性がなくなりました。
- コメントの検索機能を実装
- Linux用のセットアップスクリプト作成
- 元々のCodeReadingWikiはWindows前提でしたが、これはLinux前提です。mkcrwiki.shを移植すればWindowsでも動くとは思います。
- ディレクトリ構造・ファイル構造を変更
スクリーンショット (gnu-globalのソースコードの例)
トップページ
コメントを入れたいソースコードの行(262行目)をダブルクリックしてコメントを挿入していることろ。
コメントを入れた後に、同じ行(262行目)をダブルクリックして、コメント挿入完了したところ。赤枠と赤文字でコメントが表示されます。
コメントの検索結果。global.cの262行目にfunctionというコメント文字列が存在しています。
ダウンロード
インストール
動作確認はCentOS 5 + firefox 3.6 で行っています。手順はあまり詳細に書いていないので、不明点がある場合はコメントください。
MySQLのインストール
yumで簡単にインストール可能です。設定ファイル例はcrwiki-mazn-x.x.tar.gzに入っていますので参考にしてください。
# yum install mysql-server
MySQLのインストールの詳細は省略します。MySQL起動後、以下をMySQLに対して発行しテーブルを作成します。
CREATE DATABASE crwiki; CREATE TABLE remarks (prj VARCHAR(65) NOT NULL, src VARCHAR(255) NOT NULL, line INT NOT NULL, remark MEDIUMTEXT NOT NULL, PRIMARY KEY(prj, src, line)) TYPE = MYISAM ;
PHPのインストール
# yum install php
PHP mbstring や php-mysqlのインストール
PHP関連の必要なモジュールをインストールします。
# yum install php-mbstring php-mysql
Apacheのインストール
Apacheはデフォルトでインストールされるので、必要に応じてApacheのルートディレクトリを設定してあげてください。ここでは、/home/www とします。
Gnu Globalのインストール
Gnuglobal はCentOSには付属していないので、ソースからインストールします。今回は global-5.8.2 で動作確認をしています。バージョンが異なると、globalで生成されるhtmlファイルに違いが出て、うまく動かない可能性がありますので注意です。
CodeReadingWiki (crwiki) のインストール
今回のディレクトリ構成は以下のようにします。
/home/www ・・・ Apacheのルートディレクトリ |--- crwiki ・・・ crwiki用のディレクトリ |--- linux-kernel ・・・ 解読したいソースコード
crwiki をダウンロード・展開し、すべてのファイルを/home/www/crwikiのディレクトリに移動します。ファイルに含まれているファイルは以下のファイルです。
- crwiki.awk ・・・ globalで生成したhtmlを変更するためのawkファイル。mkcrwiki.sh から使われる
- crwiki.js ・・・ Webブラウザへ送信されるJavaScriptファイル
- crwikiconf.cgi ・・・ crwikiの設定ファイル。主にDBの接続設定を記述
- crwikilib.php ・・・ crwikiの処理を行うメインファイル
- mkcrwiki.sh ・・・ 解析実行用シェル。解析したいソースコードのあるディレクトリに対して実行する
- style.css ・・・ Webブラウザに送信されるスタイルシート
- my.cnf ・・・MySQLの設定ファイル例。削除しても構いません
crwikiの設定を行います。MySQLに接続するためのホスト名、ユーザ名、パスワードを設定してください。
# vi /home/www/crwiki/crwikiconf.cgi <?php $dba_class = "MySQLAgent"; $host = "localhost"; $user = "root"; $password = "hogehoge"; $db = "crwiki"; $db_charcode = "utf8"; ?>
読みたいソースコードをcrwikiディレクトリにディレクトリを一個作って置きます。ここでは、linux-kernel というフォルダにLinux カーネルソースコードがあるとします。
ソースを置いたら、mkcrwiki.shでソースコードの解析をします。
# cd /home/www/crwiki/ # ./mkcrwiki.sh linux-kernel
プロジェクト名を設定します。プロジェクト名はユニークにしてください。
デフォルトではディレクトリ名が入っています。プロジェクト名が空の場合は動作しません。
# vi linux-kernel/crwiki.php <?php // Prject Name $prj = "linux-kernel"; require '../crwikilib.php'; ?>
あとは対象サーバのURLにWebブラウザでアクセスしてください。