concov 0.1 リリース

デモ: http://dame.dyndns.org:7001/
ソース: http://github.com/mame/concov/

時系列に注目したコードカバレッジビューア concov をリリースします。concov は continuous coverage (造語) の略で、コードカバレッジの変化の追跡が簡単にできます。

背景

Ruby のテストメンテナ (自称) としての実体験として感じたことですが、コードカバレッジというのはテストを書けば一旦は上がりますが、その後何もしないとさまざまな要因で徐々に下がっていきます *1 。対策として、実行 (カバー) されなくなる箇所が発生したらそこをカバーするようなテストを継続的に足していく (テストをメンテナンスする) ことが有効ですが、カバーされなくなった箇所を同定するのは非常に面倒な作業でした。

concov とは?

カバーされなくなった箇所の同定作業をちょっとでも楽にしてくれるツールです。concov を使うと、

がそこそこ簡単に調べられます。

例えば、最近 Enumerable#join が追加されました *2 が、テストなしでコミットされたことがまるわかりとか *3 。


やってることは単純で、

というだけです。


まだまだ UI に改善の余地がありますしドキュメントとかも全然書いてないので、なかなか他人様に使ってもらえる状態じゃないのですが、ぼちぼち改善していけたらと思ってます。とりあえずここがわかりにくいとかこうしたらいいとかあればご意見ください。

続きは RubyKaigi で

詳細については RubyKaigi 2009 で発表予定です。興味をもたれた方は聞きに来てください。

*1:分岐の条件が変わって実行方向が変わったとか、仕様が変わってテストが古くなったとか、テストもなしに新機能を突っ込んだとか。

*2:直接的なきっかけは http://d.hatena.ne.jp/kwatch/20090630/1246377005 あたり?

*3:すでになかださんによってテスト追加済みのようです。

*4:akr さん作の Ruby 用の continuous integration ツール