simplecov について1つ気になること

simplecov は、Ruby 用の C0 コードカバレッジを測定し、その結果をサポートされている形式で出力してくれる gem。測定結果は、デフォルトでは HTML で出力される。

コードカバレッジについては、言葉だけは知っていたが何者なのか把握していなかった。いろいろ調べてみたけれど、コードカバレッジについては、まだ自分の言葉で形容できないでいる。5 google して見たページからコードカバレッジに関係する言葉を抽出したものを gist に書き連ねている。コードカバレッジにはいくつかの基準があり、simplecov では C0、日本語だと命令網羅と呼ばれるものが測定できるらしい。それぞれの基準については、以下のページでまとめられているので、そちらを参照すると良いと思う。

コードカバレッジのまとめ: ソフトウェアテストの勉強室

コードカバレッジ自体はコードの品質にはそれほど寄与はせず、カバレッジ率を100%にしたからといってこのコードにはバグがありません!などと言えるものではない。あくまでテストを書く際のサポートのためのツールである。導入コストがそれほど高くなく、現在のコードがどのような状態なのかを視覚化してくれて便利。のような感想を持った。

さっそく今仕事でやっている Rails プロジェクトで simplecov を使ってみた。簡単だ。でも1つ気になることがあって、よく把握できていないのだけれど、テストコードがないあるいはテストコードで実行されていないプロダクトコードのカバレッジ結果がない。

この件についてググってみるといくつか関係するページがヒットする。

simplecov の issue にこの件があって、それを解決する Pull Request があるけれど、マージされていないし解決されていないようなかんじだ (英語力が低い)。stackoverflow には、config/environments/test.rbconfig.eager_load = true に設定すれば良いと書いてある。eager_load の挙動を把握していないし、どのくらい影響するのかわからないし、どうなんだというかんじがある。テストの実行速度が遅くなるだけなのかなあ。

この件に対する日本語のページ (おそらく) 見あたらないし、みなさんどうしてるんですかね。テストコードがないコードに対するカバレッジ、ある方が自然っぽいけれど、その辺もどうあるのが普通なのかわからない。