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
gitで複数のコミットを一つにしてマージする

自分の開発ブランチではこまめにコミットしたいけど、リリース用のブランチにはもっと …

no image
GoogleIMEで記号入力

GoogleIME をローマ字テーブルを眺めていたら、デフォルトで記号に変換でき …

no image
パイプでつないだコマンドの戻り値を調べる@bash

シェルスクリプトで、実行したコマンドの戻り値を知る方法は有名ですよね。 以下のよ …

no image
IPv6試してみました @ RHEL5

自分自身は表す(ipv4では127.0.0.1) 方法は、 ::1 だそうです。 …

no image
Windows 10 のストアアプリが起動しない

Windows 10のストアが起動しなくなってしまったので、その時実施した対処方 …

no image
PC電源ユニット ENERMAX MODU82+ EMD525AWT購入

PCのATX電源として、Seasonic の”SS-300FS&#8 …

no image
wuzzを使ってHTTPベースのAPIを手軽に実行@Linux with Docker

wuzz というAPIを手軽に叩きながら動作を確認するツールを使ってみた。 ちょ …

no image
PS3 Media Server で自動起動できない@Windows 7 64bit

PS3 Media Player へ、DLNA環境をWindows Media …

no image
フルスクリーン時に日本語入力ツールバーが邪魔@Ubuntu 9.04

scim+anthy で日本語入力していましたが、動画を見るときにフルスクリーン …

no image
githubへのhttps(ssl)アクセスに証明書を使う@Cygwin

Cygwin上のgitで、githubからhttpsでcloneしようとしたら証 …