Googleのバグ予測アルゴリズムを実装したツール「bugspots」を使って見た。

いくつかサービスを運用しているとバグって発生しますよね?条件が複雑だったり、デバイスの数が多かったりしてバグが見逃されることが多いです。

バグを防ぐ方法としては、テストコードを書いたりソースレビューを通したりしますがそもそもバグが起きやすい箇所ってありますよね?

そこで今回紹介するのがbugspotsです。

これはGoogle社内でも採用されているらしいのですが、Gitのリポジトリー内容を解析してどこが修正されているのか予測して、バグが起きやすいファイルを数値で出してくれる見たいです。

実際に個人で作ったサービスにもいろいろとかけて見ると、良く治している箇所には数値が高かったです。

https://github.com/igrigorik/bugspots

使い方は簡単です。Rubyで実装されているのでgemをインストールします。

$gem install bugspots
$git bugspots /path/to/repo
$git bugspots . # (in current git directory)

リポジトリーに移動して、後は実行

$> cd /your/git/repo
$> git bugspots .

  .. example output .. 

    Scanning /git/eventmachine repo
    Found 31 bugfix commits, with 23 hotspots:

    Fixes:
        - Revert "Write maximum of 16KB of data to an SSL connection ...
        - Do not close attached sockets (fixes #200)
        - Write maximum of 16KB of data to an SSL connection per tick ...
        - Merge branch 'master' into close_schedule_fix
        - Remove dependency on readbytes.rb for ruby 1.9 (fixes #167, #234)
        - Fix compilation on MSVC2008 (fixes #253)
        - EM::Deferrable#(callback|errback|timeout) now return self so ...
        - Make EventMachine::Connection#get_peername and #get_socknam...
        :

    Hotspots:
        0.9723 - ext/ed.cpp
        0.3311 - ext/ed.h
        0.3271 - ext/em.cpp
        0.3034 - lib/eventmachine.rb
        0.2433 - lib/em/protocols/postgres3.rb
        0.2403 - ext/project.h
        0.0431 - lib/em/deferrable.rb
        0.029 - ext/cmain.cpp
        0.0278 - ext/rubymain.cpp
        0.0277 - ext/eventmachine.h
        0.0241 - lib/em/resolver.rb
        0.0241 - tests/test_resolver.rb

出てくるは出てくる。

面白いですねー