ラベル bugspots の投稿を表示しています。 すべての投稿を表示
ラベル bugspots の投稿を表示しています。 すべての投稿を表示

2012年4月20日金曜日

Jenkins で bugspots の結果を見やすくする

bugspots を運用しはじめて数週間経ちますが、どうにもイイ運用方法がみつかりません。
bugspots の導入の話はこちら

今のところ、Jenkins で実行して結果をコンソール出力から確認しています。が、
コンソール出力を眺めるのはちょいと面倒なので、Jenkins に集計させようと思います。

Warning Plugin の設定
今回は Warning Plugin を使います。
こちらのプラグインではコンパイラの警告などを集計してくれるのですが、ユーザー独自のパーサーを定義できます。

Warning Plugin をインストールしたら、「Jenkinsの管理」>「システムの設定」ページの「Compiler Warnings」にパーサーを追加します。
追加ボタンを押すと設定項目が表示されます。

Name は適当に、Bugspots としておきましょう。

Regular Expression のところに検出したい部分を抜き出す正規表現を記述します。
今回は Bugspots の「0.9723 - ext/ed.cpp」のように出力される部分にマッチさせます。
^\s*(\d+\.\d+) - (.*)

続いて、Mapping Script を書きます。
「?」ボタンを押すとヘルプが出ます。そちらにサンプルがあるのでそれを参考にしました。
あとは、重要度 の項目があるので適当な閾値で分けるようにしました。
import hudson.plugins.warnings.parser.Warning
import hudson.plugins.analysis.util.model.Priority

String filename = matcher.group(2)
String category = "bugspots"
String message = matcher.group(1)
float value = Float.parseFloat(message)

Priority prio = Priority.NORMAL
if( value > 1.0 ) prio = Priority.HIGH
if( value < 0.1 ) prio = Priority.LOW
return new Warning(filename, 0, "bugspots", category, message, prio)

設定するとこんな感じになります。

プロジェクトの設定
Warning Plugin の設定ができました。続いて、プロジェクトの設定をします。

プロジェクトの設定の「コンパイラの警告の集計」にチェックを入れます。
「コンソールログをスキャンする」の「Parser」に先程追加した「Bugspots」があるのでそれを選択します。


あとは、保存して設定は終わりです。
まとめ
設定したプロジェクトを実行すると、結果は「コンパイラの警告」に表示されます。



これで少しは見やすくなりました。

重要度ごとに閾値を設けてステータスを変えることもできるので、
重要度High が多かったら 失敗 にするのもありですね。

今回はここまでです。

2012年1月10日火曜日

bugspots を使ってみた

bugspots は、グーグルのバグ予測アルゴリズムを実装したツールです。

こちらの紹介記事
グーグルのバグ予測アルゴリズムを実装したツール「bugspots」、オープンソースで公開
を参考に、Windows + cygwin + svn で bugspots を使ってみました。

cygwin の準備
bugspots を使用するには、git, ruby が必要になるのでインストールしておきます。
また、bugspots のインストールに gem が必要になります。
このままでは、gem を使えないので以下から rubygems-*.*.*.tgz をダウンロードします。
http://rubyforge.org/frs/?group_id=126
適当な場所に解凍し、setup.rb を実行します。
$ tar xvzf rubygems-1.8.15.tgz 
$ cd rubygems-1.8.15
$ ruby setup.rb

今回は、svn のリポジトリに対して bugspots を使うので git-svn もインストールしておきます。

bugspots のインストール
bugspots のダウンロードページから tar.gz ファイルをダウンロードします。
解凍して、gem install を実行します。
$ tar xvzf igrigorik-bugspots-v0.1.0-3-ga9debf9.tar.gz
$ cd igrigorik-bugspots-a9debf9
$ gem install bugspots
2012/03/06 : ダウンロードは不要でした。

gem install を実行します。
$ gem install bugspots

これで、bugspots を使う準備が整いました。

bugspots を実行する
git を使っていれば、あとは
$ git bugspots /path/to/repo 
とすればいいだけなのですが、svn に対して bugspots を使用する場合は、git svn clone をします。
あとは、clone したパスで bugspots を実行するだけです。
$ git svn clone /path/to/repo git-repo
$ cd git-repo
$ git bugspots ./

実際に使ってみて
まず最初に、個人的なプログラム群に使って見ました。
Scanning ./ repo
        Found 0 bugfix commits, with 0 hotspots:

        Fixes:

        Hotspots:
何も出ません。
bugspots は fixes や closed がついたコメントがなければ、なにも教えてくれません。
ちゃんと、コミットメッセージを書け。ということです。

ついで、会社のプロジェクトに対して実行してみたところ、
ちゃんとレポートが出力されました。

しかし、この情報をどのように活用したら良いのかイマイチ…
とりあえず、コードレビューをすべきファイルの指標にはなるのかなぁーと思いました。



bugspots-svn
"bugspots" でグーグル検索すると上の方に出てくるので、これを読んでいる過程で気づいた方もいるかもしれません。
今回、git-svn で clone を作成して bugspots を適用しましたが、
bugspots-svn を使えば svn のリポジトリに対して直接適用できそうです。

spawn.h
最近、家でインストールしたときに spawn.h がなくてインストールに失敗しました。
こちらハングアップの日々 - 2012/06/06を参考に posix-spawn をインストールしたところ、bugspots も正常にインストールできました。
2012/10/2 追記