ReviewBoardでアジャイルにレビューしたい

ReviewBoardはSCMにコミットする前のdiffをベースにしてレビューするためのツールです。

今の会社ではSVNにcommitしてTracのdiffとかでレビューしていましたが、ReviewBoardはコード行数に直接関連づけてコメントを残せるのがなかなか素敵です。
SCMにコミットしなくていいのでもっと早い段階でこまめにレビューができればいいなぁと思っているのですが、レビューの登録をブラウザから行うにはdiffをとってファイルに保存→アップロードという手順を踏まなければいけないため面倒だなぁと思っていました。
ただドキュメントを見ているとレビュー登録するためのスクリプトがあるらしく、これを使えばいい感じにできます。

1.インストール
simplejsonが必要なためあらかじめインストールしておきます。

svn checkout http://simplejson.googlecode.com/svn/trunk/ simplejson-read-only
cd simplejson-read-only
sudo python setup.py install

続いてスクリプトはダウンロードするだけです。適当にパスが通っているところに置いて実行権限をつけておきます。

http://reviewboard.googlecode.com/svn/trunk/reviewboard/contrib/tools/post-review

2.新規レビュー登録
とりあえず作業ディレクトリ上のソースを変更します。

コマンドを実行します。基本的にサーバを指定するだけです。
post-review --server http://your-review-board-server-url

うまくいけば新しく作成されたレビューリクエストのURLが表示されます。うまくいかないときは--debugを指定すると原因究明がしやすくなります。これで登録されればあとはブラウザ上でコメントとか入れていくだけです。

3.修正後ソースの更新

  • rオプションでレビューリクエストのIDを指定します。

4.はまったところ
svnクライアントの出力が日本語化されていると動きません。
post-reviewは複数のSCMに対応しているのですが、SCMの判定は自動になっています。しかしソースをみると

    def get_repository_info(self):
        data = execute('svn info', ignore_errors=True)

        m = re.search(r'^Repository Root: (.+)$', data, re.M)
        if not m:
            return None

とかやってるのでsvn infoの出力が日本語だと動きません。
とりあえず

LANG= post-review .....

とかやってごまかしましたらうまくいきました。

5.雑感
とりあえずは開発中の流れでこまめにオンラインレビューを標準化できるといいなぁ。概要を入れたり状態変更もスクリプトから操作できるので(結構機能をAPI公開しているみたい)、工夫すればかなり楽ができるかもしれない。

6.参考ページ
Review Board - コードレビューをオンラインで
VMWareの開発でも利用されているソースコードレビュー共有ソフトウェア·Review Board MOONGIFT

インストールは下記が詳しいです。
http://blog.monospace.jp/2008/03/24/reviewboard_installation/