Mazn.net

やってみて 調べてみて 苦労しなけりゃ 箱は動かじ

CodeReadingWiki 改造版でソースコード解読

      2013/07/15

etherさん作成のCodeReadingWiki が、ソースコードを読むのにすごく便利で使わせて頂いていました。これはソースコードにglobalというツールでタグをつけ、Webブラウザから閲覧しながら必要に応じてソースコードにコメントを挿入できるソフトウェアです。

ソースコードはタグ付けされているので、簡単に変数や関数の定義位置に飛べたり、検索することができ、Webブラウザから閲覧できるので、複数の人とコメントを共有したりできます。

しかし、最近は更新が全然ないようなので、独自に少し改造しました。変更点は以下の通りです。

  • 見た目を変更
  • コメントはダブルクリックした行の下ではなく上に挿入
  • 複数のプロジェクトに対応 → データベースの構造を変更したので互換性がなくなりました。
  • コメントの検索機能を実装
  • Linux用のセットアップスクリプト作成
    • 元々のCodeReadingWikiはWindows前提でしたが、これはLinux前提です。mkcrwiki.shを移植すればWindowsでも動くとは思います。
  • ディレクトリ構造・ファイル構造を変更

スクリーンショット (gnu-globalのソースコードの例)

トップページ

crwiki01.jpg

コメントを入れたいソースコードの行(262行目)をダブルクリックしてコメントを挿入していることろ。

crwiki02.jpg

コメントを入れた後に、同じ行(262行目)をダブルクリックして、コメント挿入完了したところ。赤枠と赤文字でコメントが表示されます。

crwiki03.jpg

コメントの検索結果。global.cの262行目にfunctionというコメント文字列が存在しています。

crwiki04.jpg

ダウンロード

crwiki-mazn-0.2.tar.gz

インストール

動作確認は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ブラウザでアクセスしてください。

参考URL

http://rainyday.blog.so-net.ne.jp/2006-10-07

http://sourceforge.jp/projects/crwiki/

 - IT技術, プログラミング ,

336px

Message

メールアドレスが公開されることはありません。

  関連記事

no image
コマンドラインのロック@CentOS 5

コンソールログインやssh接続などでコマンドラインを使用しているとき、少し席を外 …

no image
ブックマークのスクロール位置の記憶@Firefox3

今までFirefoxを使っていて不便に思っていたことの一つに、サイドバーのブック …

no image
ディスクイメージを直接マウントする@Linux

以前、ディスクイメージファイルをkpartxを使ってマウントする方法を紹介しまし …

AutoKeyでLinuxのキーボード操作をカスタマイズ@Fedora 17

Linux でキーボード操作を、AutoKey というアプリでカスタマイズしてみ …

no image
ネットワークの遅延を発生させる@CentOS 5

検証などでネットワーク遅延を発生させたい場合、qdisc を使って簡単に実現でき …

no image
Systemtapを使ってみる@RHEL 5.5 x86_64

Systemtap を使用してみたので覚え書き。 Systemtapでは、動的に …

no image
ファイルサーバへのアクセスが異常に遅い@Windows XP or Vista

Windowsからファイルサーバ上のファイルにアクセスしようとすると、異常に遅い …

no image
ウェブページの更新がブラウザに反映されない@Firefox 3.5

オークションサイトやSNS、掲示板、もしくは自分で作っているページの編集結果の確 …

no image
cygwin ck のダブルクリック選択文字列の範囲を変更する

Cygwin 用のターミナルソフトウェア cygwin ck  を便利に使わせて …

no image
Javaアプリの日本語文字化け対策

Linux上のSunのJVMで、GUIアプリを動かすと文字化けしてしまいます。 …