Rails Best Practices を CI (Jenkins) で確認する
- 2011.09.15
- CI
こんにちは。ほりいです。 今日は rails-bestpractices の話をします。
Ruby on Rails で開発するときのベストプラクティスをまとめている “Rails Best Practices”:http://rails-bestpractices.com/ というサイトがあります。先日の RubyKaigi 2011 で、このサイトのベストプラクティスに従っていないコードを指摘してくれる gem である “rails_best_practices”:https://github.com/flyerhzm/rails_best_practices についての “発表がありました”:http://rubykaigi.org/2011/ja/schedule/details/17S04 。
今回はそれを CI に組み込んでみた話をしたいと思います。
とりあえず rails_best_practices を実際のプロジェクトのソースに対して使ってみることにします。(一応使われている項目の確認はしておきましょう)
h2. インストール〜実行
gem install rails_best_practices cd path/to/rails/root rails_best_practices
ほとんどが “行末のスペースを除去せよ”:http://rails-bestpractices.com/posts/60-remove-trailing-whitespace と “render に与えるオプションが古い”:http://rails-bestpractices.com/posts/62-simplify-render-in-controllers というエラーでしたが、257 箇所エラーだよと教えてもらいました。
んー
多いですね。
h2. Jenkins
このプロジェクトではこのエラー(?)を少しずつ直していこうということになりました。とはいえ、現状 rake spec と関連もないため、「たまに回してみる」などという不確実な方法になりがちです。
そこで、CI のレベルでトラッキングします。弊社では “Jenkins”:http://jenkins-ci.org/ を使っているので、このプラグインを利用して記録を取ることにします。
Rails の指標を測るために使われる Jenkins のプラグインには “RubyMetrics plugin”:https://github.com/jenkinsci/rubymetrics-plugin というものがあります。これを使えば、 rcov によるカバレッジの測定などはすぐ組み込むことができます。
できればこれに組み込めるのが理想なので、上記ソースを見ましたが、大変そうなので今回はパスし、汎用的なプラグインを利用します。
h2. Plot Plugin
Jenkins の汎用的なグラフ描画プラグインに “Plot Plugin”:https://wiki.jenkins-ci.org/display/JENKINS/Plot+Plugin というものがあります。今回はこれを利用します。
まず、 Jenkins のプラグインマネージャーから「Plot Plugin」を探してインストールします。
次に、プロジェクトの設定を書きます。
まずは Plot Plugin の設定。
* 「ビルドデータのプロット」にチェックします。
* 「プロットを追加」して設定の追加を開始します。
* 重要なのは「データ系列ファイル」の部分で、このファイルに結果を出力します。
* 「プロパティファイルからデータを読み込む」にして、この形式に合うような結果出力を行うよう、調整していきます。
ここでは reports/rails_best_practices.properties に出力することにしています。このファイルに指定されたデータ形式で結果を出力するようなスクリプトを書きます。
“https://gist.github.com/1173288”:https://gist.github.com/1173288
#!/bin/sh cd `dirname $0`/.. OUTDIR=reports OUTFILE=$OUTDIR/rails_best_practices.properties TMPFILE=`mktemp $OUTDIR/rails_best_practices.XXXXXX` mkdir $OUTDIR 2> /dev/null rails_best_practices > $TMPFILE STATUS=$? if [ $STATUS -eq 0 ]; then echo "YVALUE=0" > $OUTFILE else NUM=`awk '/^Found [0-9]+ errors/{ print $2; }' < $TMPFILE` echo "YVALUE=$NUM" > $OUTFILE fi rm $TMPFILE
あとは、このスクリプトをビルドの途中で実行しておきます(もちろん、Jenkins でのビルド環境で rails_best_practices をインストールしておくのを忘れずに)
h2. 結果表示
うまくいっていれば左メニューの「プロット」からこのようなグラフを見ることができるはずです。
h2. まとめ
rails_best_practices で確認できるプラクティスは “Rails Best Practices” の一部ですが、それでも指標を出せることは意義が大きいと思います。そして、それを CI 見える化しておくことはとても参考になると思います。
あとは誰か RubyMetrics で使えるようにしてくれると……(他力本願)。
それではまた。
-
前の記事
Aiming 開発者ブログを開設致しました 2011.08.04
-
次の記事
インターンシップ体験記 2011.09.20