カバレッジ測ってみた

最近つくっているプロジェクト(WeatherHacker)で、カバレッジを取り始めたら結構捗った。個人で進めているプロジェクトでは特に、どこまで進めば良いか・どこまで進んだのかが見えづらいので、指標化すること自体で単純に捗ると思う。位置がわからなかったら速度感わからないし、位置がわかれば速度や加速度がわかって、いろんな予想が付きやすくなりそう。何より、これだけやったみたいなモチベーションが湧いて良い。

simplecov

これまでカバレッジ測定とか個人でしたことなくて、Rubyでカバレッジ測定するやつを聞いたら@aerealさんがSimpleCovというのを教えてくれて、調べて導入してみたら、かなり簡単にカバレッジを取ることができた。まとめると、こういう感じで導入できる。

$ echo 'gem "simplecov", :require =\> false' \>\> Gemfile $ bundle install $ vim spec/spec\_helper.rb $ cat spec/spec\_helper.rb $LOAD\_PATH.unshift File.expand\_path("../", \_\_FILE\_\_) $LOAD\_PATH.unshift File.expand\_path("../../lib", \_\_FILE\_\_) require "simplecov" require "weather\_hacker" $ echo "SimpleCov.start" \>\> .simplecov $ echo ".simplecov" \>\> .git/info/excludes $ bundle exec rspec $ open coverage/index.html

simplecov-vim

simplecov-vimを使うと、カバレッジの有無をVimのマーカーで表示してくれて便利。

$ echo 'gem "simplecov-vim", :require =\> false' \>\> Gemfile $ bundle install $ vim .simplecov $ cat .simplecov require "simplecov-vim/formatter" class SimpleCov::Formatter::MergedFormatter def format(result) SimpleCov::Formatter::HTMLFormatter.new.format(result) SimpleCov::Formatter::VimFormatter.new.format(result) end end SimpleCov.start do formatter SimpleCov::Formatter::MergedFormatter end $ bundle exec rspec $ echo "coverage.vim" \>\> .git/info/excludes $ vim lib/weather\_hacker.rb :so /path/to/coverage.vim でマーカーが表示されれば成功

こうしたいとか

検証する(カバレッジを見る) => 考える => 変更する => 検証する(カバレッジを見る)、の回転をもっと速くしたいので、カバレッジはリアルタイムで更新されてほしい。@makimotoさんが寿司じゃないブログでGuardを紹介されていたので、Guard導入してみたいと思う。iPhoneとかにリアルタイム更新されるように可愛く表示して、カバレッジ60..70..80%..!?とかやりたい。

Coverage 100%, Do it.