Make OpenCover reports available in CruiseControl.NET

2.7k views Asked by At

I'm trying to integrate OpenCover with CruiseControl.NET. At this point I've modified by build system so it runs my nunit tests under OpenCover. I then generate Xml and Html reports from those using ReportGenerator.

Assuming it's possible to integrate the reports generated by ReportGenerator into the CruiseControl.NET webapp, how do I integrate the two?

NCover has it's own NCoverReporting task that can be used, but as I'm not running NCover I can't compare its output with the XML reports generated by OpenCover.

Related thoughts / questions:

  • OpenCover generates an XML file by default, but is that XML file consumable by cc.net?
  • ReportGenerator also generates XML, are they intended for something like cc.net?
  • cc.net has a File-Merge publisher that merges logs, but I haven't yet found any documentation indicating which file formats are useful/used by cc.net.
2

There are 2 answers

4
Marcel Valdez Orozco On BEST ANSWER

I had this problem and I solved it with these steps, take into account that I'm using msbuild, so this will only work if you're using msbuild:

  1. Add a Target for Coverage
  2. Add a task to your build.proj for creating the OpenCoverage output (OpenCoverReport.xml)
  3. Right after after that, add a task for creating the Summary report using ReportGenerator (reporttypes:XML). Like so: MSBuild Coverage Target Example
  4. Create the XSL Transforms for creating HTML output with the Summary.xml, don't worry I wrote it already: For parsing assembly level coverage (in your build log output) use the following: XSLT for an Assembly level coverage report and for parsing the Class level coverage (detailed report) use the following: XSLT for a Class level coverage report
  5. Add the buildReportBuildPlugin and xslReportBuildPlugin for creating both reports using the previous XSLT files in your dashboard.config file: Add this to the configuration
  6. Merge the coverage report summary XML file to the Build output, in your ccnet.config file: add this to your configuration
1
fiat On

You could use External Links in your ccnet.config after exposing your report via IIS

   <externalLinks>
     <externalLink name="Code Coverage"     url="http://cc.net/coverage" /> 
   </externalLinks>