デモ: 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 で発表予定です。興味をもたれた方は聞きに来てください。