This project has moved. For the latest updates, please go here.

Feature Request: Support Xml input from Dynamic Code Coverage - CodeCoverage.exe

Jun 14, 2013 at 3:17 AM
It looks like there's a new instrumentation tool called Dynamic Code Coverage (aptly named CodeCoverage.exe) in VS2012. By default it's installed in "\Program Files (x86)\Microsoft Visual Studio 11.0\Team Tools\Dynamic Code Coverage Tools". It can natively output xml coverage data.

I was wondering what the likelihood of ReportGenerator supporting this Xml input would be? Here's an output of a small program:
<?xml version="1.0" encoding="UTF-8" ?>
<results>
  <modules>
    <module name="coveragetest.exe" path="coveragetest.exe" id="48514CF9CA28824F892788AF9D461F3B05000000" block_coverage="62.50" line_coverage="61.90" blocks_covered="15" blocks_not_covered="9" lines_covered="13" lines_partially_covered="1" lines_not_covered="7">
      <functions>
        <function id="8272" token="0x6000001" name="Main(string[])" type_name="Program" block_coverage="0.00" line_coverage="0.00" blocks_covered="0" blocks_not_covered="1" lines_covered="0" lines_partially_covered="0" lines_not_covered="1">
          <ranges>
            <range source_id="0" covered="no" start_line="16" start_column="9" end_line="16" end_column="10" />
          </ranges>
        </function>
        <function id="8276" token="0x6000002" name="DoTests()" type_name="Program" block_coverage="70.59" line_coverage="73.33" blocks_covered="12" blocks_not_covered="5" lines_covered="11" lines_partially_covered="1" lines_not_covered="3">
          <ranges>
            <range source_id="0" covered="yes" start_line="21" start_column="13" end_line="21" end_column="26" />
            <range source_id="0" covered="yes" start_line="22" start_column="13" end_line="22" end_column="27" />
            <range source_id="0" covered="yes" start_line="23" start_column="13" end_line="23" end_column="19" />
            <range source_id="0" covered="yes" start_line="24" start_column="17" end_line="24" end_column="43" />
            <range source_id="0" covered="yes" start_line="25" start_column="13" end_line="25" end_column="24" />
            <range source_id="0" covered="no" start_line="26" start_column="17" end_line="26" end_column="52" />
            <range source_id="0" covered="partial" start_line="27" start_column="13" end_line="27" end_column="24" />
            <range source_id="0" covered="yes" start_line="28" start_column="17" end_line="28" end_column="52" />
            <range source_id="0" covered="yes" start_line="29" start_column="13" end_line="29" end_column="24" />
            <range source_id="0" covered="no" start_line="30" start_column="17" end_line="30" end_column="53" />
            <range source_id="0" covered="yes" start_line="31" start_column="18" end_line="31" end_column="28" />
            <range source_id="0" covered="yes" start_line="31" start_column="29" end_line="31" end_column="35" />
            <range source_id="0" covered="yes" start_line="33" start_column="13" end_line="33" end_column="39" />
            <range source_id="0" covered="yes" start_line="34" start_column="13" end_line="34" end_column="56" />
            <range source_id="0" covered="no" start_line="35" start_column="17" end_line="35" end_column="36" />
            <range source_id="0" covered="yes" start_line="36" start_column="9" end_line="36" end_column="10" />
          </ranges>
        </function>
        <function id="8384" token="0x6000003" name="Test2()" type_name="Program" block_coverage="0.00" line_coverage="0.00" blocks_covered="0" blocks_not_covered="2" lines_covered="0" lines_partially_covered="0" lines_not_covered="2">
          <ranges>
            <range source_id="0" covered="no" start_line="42" start_column="13" end_line="42" end_column="41" />
            <range source_id="0" covered="no" start_line="43" start_column="9" end_line="43" end_column="10" />
          </ranges>
        </function>
        <function id="8393" token="0x6000004" name="Test3()" type_name="Program" block_coverage="100.00" line_coverage="100.00" blocks_covered="2" blocks_not_covered="0" lines_covered="1" lines_partially_covered="0" lines_not_covered="0">
          <ranges>
            <range source_id="0" covered="yes" start_line="48" start_column="13" end_line="48" end_column="49" />
          </ranges>
        </function>
        <function id="8400" token="0x6000005" name="Test4()" type_name="Program" block_coverage="50.00" line_coverage="50.00" blocks_covered="1" blocks_not_covered="1" lines_covered="1" lines_partially_covered="0" lines_not_covered="1">
          <ranges>
            <range source_id="0" covered="yes" start_line="54" start_column="13" end_line="54" end_column="42" />
            <range source_id="0" covered="no" start_line="55" start_column="9" end_line="55" end_column="10" />
          </ranges>
        </function>
      </functions>
      <source_files>
        <source_file id="0" path="d:\Testing\CoverageTest\Program.cs">
        </source_file>
      </source_files>
    </module>
  </modules>
</results>
Coordinator
Jun 14, 2013 at 6:50 AM
Thanks for the hint.
I will have a look at it. But it will take some time, since I'm pretty busy at the moment.
Coordinator
Jun 19, 2013 at 7:06 PM
I have added support for this format in changeset #73194
I will publish a new release soon.
Jun 21, 2013 at 12:33 PM
That's awesome! Thank you so much for this!