2009-07-02 44 views

回答

1

据我所知,一个HTML报告,有像NCoverExplorer没有方便的工具,它可以改变一个PartCover结果.xml文件成.html报告,但有一些.xsl文件可用于将PartCover的结果转换为CruiseControl.NET中的.html:Using CruiseControl.NET with PartCover

您可以从CruiseControl.NET获取这些.xsl文件,并使用类似Sandcastle的XslTransform.exe的方式转换您的PartCover结果。顺便说一下,如果这恰好与TeamCity相关,即将推出的5.0版本将包括使用PartCover或NCover支持.NET覆盖。请参阅documentation了解更多信息。否则忽略这一段;-)

+0

哦,等等,我知道那个名字。你是TeamCity开发人员之一!在这种情况下,请忽略我最后一段。这是一个小世界毕竟:) – Cygon 2009-08-27 06:52:44

+0

LoL兄弟,最后一段很有趣:) – 2010-04-21 15:46:16

0

也许是一个复杂的做法,但我用Simian XML报告做到了这一点。为格式创建了一个XSL文件,然后编写了一个愚蠢的小控制台应用程序;

private const string MissingExtension = "Please enter a valid {0} file, this is missing the extension."; 
    private const string InvalidExtension = "Please enter a valid {0} file, the file provided has an invalid extension."; 

    public static void Main(string[] args) 
    { 
     if (args.Length < 2) 
     { 
      System.Console.WriteLine("Please enter a xsl file and xml file full path."); 
      return; 
     } 

     var xslFile = args[0]; 
     var xmlFile = args[1]; 

     if (!CheckFileNameFormat(xslFile, false)) 
      return; 
     if (!CheckFileNameFormat(xmlFile, true)) 
      return; 

     var transform = new XslCompiledTransform(); 
     // Load the XSL stylesheet. 
     transform.Load(xslFile); 
     // Transform xml file into an html using the xsl file provided. 
     transform.Transform(xmlFile, xmlFile.Replace("xml", "html")); 
    } 

    private static bool CheckFileNameFormat(string fileName, bool isXmlFile) 
    { 
     var extension = isXmlFile ? "xml" : "xsl"; 

     // valida that the argument has a period 
     if (fileName.IndexOf(".") < 1) 
     { 
      System.Console.WriteLine(string.Format(MissingExtension, extension)); 
      return false; 
     } 

     var filePieces = fileName.Split('.'); 
     // split on the period and make sure the extension is valid 
     if (filePieces[filePieces.GetUpperBound(0)] != extension) 
     { 
      System.Console.WriteLine(string.Format(InvalidExtension, extension)); 
      return false; 
     } 

     return true; 
    } 

然后我可以从这样的MSBuild文件中调用它;

<Target Name="RunSimian" DependsOnTargets="RebuildSolution"> 

<Exec IgnoreExitCode="true" Command="&quot;$(MSBuildProjectDirectory)\..\Build\Packages\Simian\simian-2.2.24.exe&quot; -formatter=xml:$(MSBuildProjectDirectory)\..\Build\Artifacts\simian.xml -language=cs -excludes=$(MSBuildProjectDirectory)\..\Product\Production\**\*.Designer.cs $(MSBuildProjectDirectory)\Production\**\*.cs" > 
</Exec> 

<Exec IgnoreExitCode="true" Command="&quot;$(MSBuildProjectDirectory)\..\Build\Packages\XmlToHtmlConverter.exe&quot; $(MSBuildProjectDirectory)\..\Build\Packages\Simian\simian.xsl $(MSBuildProjectDirectory)\..\Build\Artifacts\simian.xml"> 
</Exec>