File: README.rake

# README.rake

Path: | README.rake
Last Update: | Sun Aug 31 04:11:35 -0600 2008

## Code coverage analysis automation with Rake

Since 0.4.0, `rcov` features a `Rcov::RcovTask` task for rake which can be used to automate test coverage analysis. Basic usage is as follows:

     require 'rcov/rcovtask'
     Rcov::RcovTask.new do |t|
       t.test_files = FileList['test/test*.rb']
       # t.verbose = true     # uncomment to see the executed command
     end

This will create by default a task named `rcov`, and also a task to remove the output directory where the XHTML report is generated. The latter will be named `clobber_rcob`, and will be added to the main `clobber` target.

### Passing command line options to `rcov`

You can provide a description, change the name of the generated tasks (the one used to generate the report(s) and the clobber_ one) and pass options to `rcov`:

     desc "Analyze code coverage of the unit tests."
     Rcov::RcovTask.new(:coverage) do |t|
       t.test_files = FileList['test/test*.rb']
       t.verbose = true
       ## get a text report on stdout when rake is run:
       t.rcov_opts << "--text-report"
       ## only report files under 80% coverage
       t.rcov_opts << "--threshold 80"
     end

That will generate a `coverage` task and the associated `clobber_coverage` task to remove the directory the report is dumped to ("`coverage`" by default).

You can specify a different destination directory, which comes handy if you have several `RcovTask`s; the `clobber_*` will take care of removing that directory:

     desc "Analyze code coverage for the FileStatistics class."
     Rcov::RcovTask.new(:rcov_sourcefile) do |t|
       t.test_files = FileList['test/test_FileStatistics.rb']
       t.verbose = true
       t.rcov_opts << "--test-unit-only"
       t.output_dir = "coverage.sourcefile"
     end

     Rcov::RcovTask.new(:rcov_ccanalyzer) do |t|
       t.test_files = FileList['test/test_CodeCoverageAnalyzer.rb']
       t.verbose = true
       t.rcov_opts << "--test-unit-only"
       t.output_dir = "coverage.ccanalyzer"
     end

### Options passed through the `rake` command line

You can override the options defined in the RcovTask by passing the new options at the time you invoke rake. The documentation for the Rcov::RcovTask explains how this can be done.

[Validate]