Skip to content

Instantly share code, notes, and snippets.

@AtwoodTM
Forked from chillitom/msbuild.targets
Created May 11, 2016 15:44
Show Gist options
  • Save AtwoodTM/eaa531294dd697d6d01683cfc87459ac to your computer and use it in GitHub Desktop.
Save AtwoodTM/eaa531294dd697d6d01683cfc87459ac to your computer and use it in GitHub Desktop.
XSLT to convert OpenCover xml to NCover 1.x format for use with Bamboo
<!-- example msbuild target -->
<Target Name="TranslateCoverageXml">
<ItemGroup>
<CoverageFiles Include="$(TestsDir)\*.opencover" />
</ItemGroup>
<XslTransformation XmlInputPaths="%(CoverageFiles.Identity)"
XslInputPath="$(MSBuildProjectDirectory)\opencover_to_ncover.xslt"
OutputPaths="$(TestsDir)\%(CoverageFiles.FileName).ncover.xml" />
</Target>
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml" indent="yes" standalone="yes"/>
<xsl:template match="/CoverageSession/Modules">
<coverage>
<xsl:for-each select="Module[not(@skippedDueTo)]">
<module name="{ModuleName}">
<xsl:for-each select="Classes/Class">
<xsl:if test="count(Methods/Method) &gt; 0">
<class name="{FullName}">
<xsl:variable name="className" select="FullName" />
<xsl:for-each select="Methods/Method">
<method class="{$className}">
<xsl:for-each select="SequencePoints/SequencePoint">
<seqpnt visitcount="{@vc}" />
</xsl:for-each>
</method>
</xsl:for-each>
</class>
</xsl:if>
</xsl:for-each>
</module>
</xsl:for-each>
</coverage>
</xsl:template>
</xsl:stylesheet>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment