読者です 読者をやめる 読者になる 読者になる

Googleのバグ予測アルゴリズムを実装した「bugspots」のSVN版を作ってみた

先日、Googleのバグ予測アルゴリズムを実装した「bugspots」が公開されました。

ソースコードのなかでバグが多いのは、より高頻度に、かつ最近になって集中的に直している部分。これが、グーグルで採用された「バグ予測アルゴリズム」であることを、先月の記事「グーグルはコードの品質向上のため「バグ予測アルゴリズム」を採用している」で紹介しました。

そのバグ予測アルゴリズムを実装したツール「bugspots」がオープンソースとして公開されています。

グーグルのバグ予測アルゴリズムを実装したツール「bugspots」、オープンソースで公開 - Publickey

上記ツールは、Gitのリポジトリで管理されているソースのみが対象となっています。

ただ、OSSの開発ならいざ知らず、実際の開発業務では、まだまだSVNの利用も多いことでしょう。

そこで、SVNSubversion)のリポジトリで管理されているソースコードを対象に解析できる、

bugspots-svn

を実装してみました。


以下のようにして実行できます。

[前提条件]

  • Ubuntu 11.10 で確認。
  • ruby がインストールされていること。


1. subversionrubyバインディングをインストールする。

$ sudo apt-get install libsvn-ruby


2. 「bugspots-svn」をgithubから取得し、ビルド&インストールする。

$ git clone git://github.com/takanorig/bugspots-svn.git
$ cd bugspots-svn
$ gem build bugspots-svn.gemspec
$ sudo gem install --force bugspots-svn-0.1.0.beta.gem


3. SVNから解析対象のソースコードをチェックアウトし、「bugspots-svn」を実行する。

$ svn checkout http://wwww.samplerepo.com/svn/trunk /path/to/repo
$ /usr/local/bin/svn-bugspots /path/to/repo
  • ソースコードのパスは、URLには対応していません。チェックアウトした上で、そのローカルパスを指定してください。
  • デフォルトでは、「refs, fixes, closed」などのTracRedmineで連携する際に利用されるキーワードを含むリビジョンが解析対象となります。特定のキーワードを指定したい場合は、以下のようにしてください。
    • $ /usr/local/bin/svn-bugspots -word "word1,word2" /path/to/repo

これで、一応解析結果は出力されるはず。

ただ、Rubyは久しぶりに使った&初心者なので、正しく計算されているのか、すっごく不安。
いくつかのリポジトリで検証してみたんだけど、結構、値が低く出るんですよね。解析ロジック自体は、元のbugspotsのままなのですが...

グーグルはコードの品質向上のため「バグ予測アルゴリズム」を採用している − Publickey」で示されている式を利用した計算結果と一致するか、検証する予定ですが、現段階では、計算結果は保証できませんw

検証して頂けた方がいれば、ぜひ、ご連絡くださいm(__)m

2012/01/16 追記


リビジョンの取得方法に問題があったので、修正しました。
これで、大丈夫(なはず)。