Ruby 1.9(.2) is an amazing language to develop applications in. It’s faster, more powerful, cleaner, and a huge improvement over Ruby 1.8.x. Because of those reasons every Ruby developer should move to this exciting new version of our language.
When making a move of this size it’s important to have the right tools to help us along. Unfortunately, one of the most useful tools as a Ruby developer, RCov, does not work with Ruby 1.9.
RCov, for those unfamiliar analyzes your code and tells you which part of your code was not executed. This is INCREDIBLY useful when hooked up to your test suite. While, it’s not the only metric you should use when determining how good your test coverage it, it certainly is a great first step to point out exactly which parts of your code haven’t been touched at all!
While working on a Ruby 1.9/Rails 3 project, and loving everything about it (except for the lack of RCov), I came across a post by Aaron Patterson (of Nokogiri fame). In this post he quickly outlined a very basic coverage tool using the new built-in Coverage module in Ruby 1.9.
After spending a morning playing with it, I was quickly able to grow the idea into something useful for the project. Later that day the company I was consulting for BiddingForGood.com, and in particular their chief architect, Stuart Garner, told me to take a day or two and clean it up and release it for the world to use, and so here it is. ##Features
Here is a brief overview of the features of CoverMe:
- Sortable column headers (File, Lines, Lines of Code, Tested %).
- Searching/filtering by file name.
- Filtering by coverage percent.
- Color coded list of files to quickly see which ones are 100% covered, > 90% covered, or less than 90% covered.
- Large color coded average coverage percent, for quick reference.
- Line by line coverage report
- Color coded lines to quickly see which lines where executed and which ones were not.
- Side by side viewing with the corresponding test/spec file (if one exists).
See the README file for more information on installation and usage.
I would just quickly like to give another quick thanks to Aaron Patterson for pointing out the Coverage module in Ruby 1.9 and inspiring this, hopefully, helpful little gem. Also another big thanks to Stuart Garner for pushing me to package this up and release it to the world.