Comment générer un rapport HTML à partir des résultats PartCover .xmlComment générer un rapport HTML à partir des résultats PartCover .xml
Répondre
A ma connaissance, il n'y a pas d'outil pratique comme NCoverExplorer qui peut transformer un résultat de PartCover .xml dans un rapport .html, mais certains fichiers .xsl peuvent être utilisés pour transformer les résultats de PartCover en .html dans CruiseControl.NET: Using CruiseControl.NET with PartCover.
Vous pouvez prendre ces fichiers .xsl de CruiseControl.NET et convertir votre fichier results.xml de PartCover en utilisant quelque chose comme XslTransform.exe de Sandcastle. Par ailleurs, si cela se rapporte à TeamCity, la prochaine version 5.0 inclura la prise en charge de la couverture .NET en utilisant PartCover ou NCover. Voir le documentation pour plus d'informations. Sinon, ignorez ce paragraphe ;-)
Oh, attends, je connais ce nom. Vous êtes l'un des développeurs de TeamCity! Dans ce cas, ignorez mon dernier paragraphe. C'est un petit monde après tout :) – Cygon
LoL mec, le dernier paragraphe est marrant :) –
Peut-être une façon compliquée de le faire, mais je l'ai fait avec le rapport xml Simian. Créé un fichier XSL pour le formatage, puis a écrit une petite application de console stupide;
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;
}
Puis je peux l'appeler à partir d'un fichier MSBuild comme ça;
<Target Name="RunSimian" DependsOnTargets="RebuildSolution">
<Exec IgnoreExitCode="true" Command=""$(MSBuildProjectDirectory)\..\Build\Packages\Simian\simian-2.2.24.exe" -formatter=xml:$(MSBuildProjectDirectory)\..\Build\Artifacts\simian.xml -language=cs -excludes=$(MSBuildProjectDirectory)\..\Product\Production\**\*.Designer.cs $(MSBuildProjectDirectory)\Production\**\*.cs" >
</Exec>
<Exec IgnoreExitCode="true" Command=""$(MSBuildProjectDirectory)\..\Build\Packages\XmlToHtmlConverter.exe" $(MSBuildProjectDirectory)\..\Build\Packages\Simian\simian.xsl $(MSBuildProjectDirectory)\..\Build\Artifacts\simian.xml">
</Exec>
solution est probablement plus facile d'utiliser msxsl, un simple transformateur de ligne de commande. Je l'utilise exactement dans ce but, et il est facile à intégrer dans votre système de construction.
Il y a un outil que vous pouvez utiliser pour générer un rapport HTML:
http://reportgenerator.codeplex.com
vous pouvez trouver un article comment intégrer l'outil dans MSBuild:
Je l'ai essayé. Cet outil était très lent. –
ReportGenerator a été amélioré au cours des derniers mois. C'est ** beaucoup ** plus rapide maintenant. La dernière version utilise TPL pour des performances encore meilleures. Télécharger: http://reportgenerator.codeplex.com – Daniel
Vous devriez peut-être préciser ce que vous entendez par résultats PartCover .xml. Si vous souhaitez générer un rapport HTML à partir d'un XML au sens général, vous pouvez le faire en utilisant XSLT. – futureelite7