Visualisation puissante de la couverture du code
ReportGenerator convertit les rapports de couverture générés par coverlet, OpenCover, dotCover, Visual Studio, NCover, Cobertura, JaCoCo, Clover, gcov ou lcov en rapports lisibles par l'homme dans divers formats.
Les rapports affichent les quotas de couverture et visualisent également quelles lignes de votre code source ont été couvertes.
ReportGenerator prend en charge la fusion de plusieurs fichiers de couverture en un seul rapport.
Parcourir un exemple de rapport HTML
ReportGenerator est un outil en ligne de commande qui fonctionne avec .NET Framework et .NET Core complets.
Utilisez l'outil de configuration en ligne pour démarrer rapidement.
Emballer | Plateformes | Installation/Utilisation |
---|---|---|
Générateur de rapports | .NET Core > = 8,0 .NET Framework 4.7 | Utilisez ce package si votre projet est basé sur .NET Framework ou .NET Core et que vous souhaitez utiliser ReportGenerator via la ligne de commande ou un script de build. Usage dotnet $(UserProfile).nugetpackagesreportgeneratorxyztoolsnet8.0ReportGenerator.dll [options] $(UserProfile).nugetpackagesreportgeneratorxyztoolsnet8.0ReportGenerator.exe [options] $(UserProfile).nugetpackagesreportgeneratorxyztoolsnet47ReportGenerator.exe [options] |
dotnet-reportgenerator-globaltool | .NET Core > = 8,0 | Utilisez ce package si votre projet est basé sur .NET Core et que vous souhaitez utiliser ReportGenerator comme un « DotnetTool » (global). Installation dotnet tool install -g dotnet-reportgenerator-globaltool dotnet tool install dotnet-reportgenerator-globaltool --tool-path tools dotnet new tool-manifest dotnet tool install dotnet-reportgenerator-globaltool Usage reportgenerator [options] toolsreportgenerator.exe [options] dotnet reportgenerator [options] |
ReportGenerator.Core | Norme .NET 2.0 | Utilisez ce package si vous souhaitez écrire un plugin personnalisé pour ReportGenerator ou si vous souhaitez appeler/exécuter ReportGenerator dans votre base de code. Développement de plugins Rapports personnalisés Stockage d'historique personnalisé |
Extension Azure DevOps | .NET Core > = 8,0 | Ajoutez l'extension Azure DevOps à votre pipeline de build. Apprendre encore plus |
Actions GitHub | .NET Core > = 8,0 | Ajoutez l'action GitHub à votre pipeline de build. Apprendre encore plus |
Utilisez l'outil de configuration en ligne pour démarrer rapidement.
Les paramètres les plus avancés sont documentés dans le wiki.
Parameters:
["]-reports:<report>[;<report>][;<report>]["]
["]-targetdir:<target directory>["]
[["]-reporttypes:<Html|HtmlSummary|...>[;<Html|HtmlSummary|...>]["]]
[["]-sourcedirs:<directory>[;<directory>][;<directory>]["]]
[["]-historydir:<history directory>["]]
[["]-plugins:<plugin>[;<plugin>][;<plugin>]["]]
[["]-assemblyfilters:<(+|-)filter>[;<(+|-)filter>][;<(+|-)filter>]["]]
[["]-classfilters:<(+|-)filter>[;<(+|-)filter>][;<(+|-)filter>]["]]
[["]-filefilters:<(+|-)filter>[;<(+|-)filter>][;<(+|-)filter>]["]]
[["]-riskhotspotassemblyfilters:<(+|-)filter>[;<(+|-)filter>][;<(+|-)filter>]["]]
[["]-riskhotspotclassfilters:<(+|-)filter>[;<(+|-)filter>][;<(+|-)filter>]["]]
[["]-verbosity:<Verbose|Info|Warning|Error|Off>["]]
[["]-title:<title>["]]
[["]-tag:<tag>["]]
[["]-license:<license>["]]
Explanations:
Reports: The coverage reports that should be parsed (separated by semicolon).
Globbing is supported.
Target directory: The directory where the generated report should be saved.
Report types: The output formats and scope (separated by semicolon).
Values: Badges, Clover, Cobertura, CsvSummary,
MarkdownSummary, MarkdownAssembliesSummary, MarkdownSummaryGithub, MarkdownDeltaSummary
OpenCover
Html, Html_Light, Html_Dark, Html_BlueRed
HtmlChart, HtmlInline, HtmlSummary, Html_BlueRed_Summary
HtmlInline_AzurePipelines, HtmlInline_AzurePipelines_Light, HtmlInline_AzurePipelines_Dark
JsonSummary, CodeClimate, Latex, LatexSummary, lcov, MHtml, SvgChart, SonarQube, TeamCitySummary
TextSummary, TextDeltaSummary
Xml, XmlSummary
Source directories: Optional directories which contain the corresponding source code (separated by semicolon).
The source directories are used if coverage report contains classes without path information.
Globbing is not supported.
History directory: Optional directory for storing persistent coverage information.
Can be used in future reports to show coverage evolution.
Plugins: Optional plugin files for custom reports or custom history storage (separated by semicolon).
Assembly filters: Optional list of assemblies that should be included or excluded in the report.
Class filters: Optional list of classes that should be included or excluded in the report.
File filters: Optional list of files that should be included or excluded in the report.
Risk hotspot assembly filters: Optional list of assemblies that should be included or excluded in the risk hotspots.
Risk hotspot class filters: Optional list of classes that should be included or excluded in the risk hotspots.
Exclusion filters take precedence over inclusion filters.
Wildcards are allowed.
Verbosity: The verbosity level of the log messages.
Values: Verbose, Info, Warning, Error, Off
Title: Optional title.
Tag: Optional tag or build version.
License: Optional license for PRO version. Get your license here: https://reportgenerator.io/pro
License can also be supplied via 'REPORTGENERATOR_LICENSE' environment variable.
Default values:
-reporttypes:Html
-assemblyfilters:+*
-classfilters:+*
-filefilters:+*
-riskhotspotassemblyfilters:+*
-riskhotspotclassfilters:+*
-verbosity:Info
Examples:
"-reports:coverage.xml" "-targetdir:C:report"
"-reports:target**.xml" "-targetdir:C:report" -reporttypes:Latex;HtmlSummary -title:IntegrationTest -tag:v1.4.5
"-reports:coverage1.xml;coverage2.xml" "-targetdir:report" "-sourcedirs:C:MyProject" -plugins:CustomReports.dll
"-reports:coverage.xml" "-targetdir:C:report" "-assemblyfilters:+Included;-Excluded.*"
Tous les paramètres ci-dessus peuvent également être conservés dans un fichier .netconfig, sous une section [ReportGenerator]
. Exemples :
[ ReportGenerator ]
reports = coverage.xml
targetdir = " C: \ report "
reporttypes = Latex,HtmlSummary
assemblyfilters = +Test,-Test
classfilters = +Test2,-Test2
Toutes les options au pluriel peuvent également être spécifiées sous forme de plusieurs entrées au singulier, comme :
[ ReportGenerator ]
report = coverage1.xml
report = coverage2.xml
reporttype = Latex
reporttype = HtmlSummary
assemblyfilter = +Test
assemblyfilter = -Test
classfilter = +Test2
classfilter = -Test2
filefilter = +cs
filefilter = -vb
riskhotspotassemblyfilter = +Test
riskhotspotassemblyfilter = -Test
riskhotspotclassfilter = +Test2
riskhotspotclassfilter = -Test2
sourcedir = src
sourcedir = test
L'ajout/suppression de valeurs est trivial à l'aide de la CLI dotnet-config :
# set a single-valued variable
dotnet config reportgenerator.reporttypes Latex ; HtmlSummary
# add to multi-valued variable
dotnet config --add reportgenerator.report coverage3.xml
# clear all multi-valued entries for a variable
dotnet config --unset-all reportgenerator.assemblyfilter
Bien sûr, il est tout aussi trivial de simplement modifier le fichier .netconfig
à la main.
Une tâche MSBuild existe également :
<? xml version = " 1.0 " encoding = " utf-8 " ?>
< Project DefaultTargets = " Coverage " xmlns = " http://schemas.microsoft.com/developer/msbuild/2003 " ToolsVersion = " 4.0 " >
< ItemGroup >
< PackageReference Include = " ReportGenerator " Version = " x.y.z " />
</ ItemGroup >
< Target Name = " Coverage " >
< ItemGroup >
< CoverageFiles Include = " OpenCover.xml " />
</ ItemGroup >
< ReportGenerator ProjectDirectory = " $(MSBuildProjectDirectory) " ReportFiles = " @(CoverageFiles) " TargetDirectory = " report " ReportTypes = " Html;Latex " HistoryDirectory = " history " Plugins = " CustomReports.dll " AssemblyFilters = " +Include;-Excluded " VerbosityLevel = " Verbose " />
</ Target >
</ Project >
Les paramètres de la tâche MSBuild peuvent être complétés par le .netconfig
, s'il est utilisé. Cela signifie que les paramètres peuvent être omis s'ils sont fournis via .netconfig
, ce qui est utile lors de la réutilisation de paramètres fixes sur plusieurs projets dans une solution, où la tâche MSBuild ne reçoit que les valeurs dynamiques du projet en cours :
Étant donné le .netconfig
suivant :
[ ReportGenerator ]
reporttypes = Html ; Latex
targetdirectory = report
historydirectory = history
assemblyfilters = +Include ; -Excluded
verbosityLevel = Verbose
L’objectif ci-dessus pourrait être simplifié comme suit :
< Target Name = " Coverage " >
< ItemGroup >
< CoverageFiles Include = " OpenCover.xml " />
</ ItemGroup >
< ReportGenerator ProjectDirectory = " $(MSBuildProjectDirectory) "
ReportFiles = " @(CoverageFiles) "
Plugins = " CustomReports.dll " />
</ Target >
ReportGenerator prend en charge plusieurs formats d'entrée et de sortie.
Le wiki explique les différents formats de sortie ou vous pouvez télécharger des exemples de rapports de tous les formats de sortie pris en charge.
Si vous avez besoin d'un format personnalisé, vous pouvez créer un plugin.
Formats d'entrée | Formats de sortie |
---|---|
|
|
Les captures d'écran montrent deux extraits des rapports générés :