Мощная визуализация покрытия кода
ReportGenerator преобразует отчеты о покрытии, созданные Coverlet, OpenCover, dotCover, Visual Studio, NCover, Cobertura, JaCoCo, Clover, gcov или lcov, в удобочитаемые отчеты в различных форматах.
В отчетах отображаются квоты покрытия, а также визуализируются строки исходного кода, которые были покрыты.
ReportGenerator поддерживает объединение нескольких файлов покрытия в один отчет.
Посмотреть пример HTML-отчета
ReportGenerator — это инструмент командной строки, который работает с полной версией .NET Framework и .NET Core.
Используйте онлайн-инструмент настройки, чтобы быстро приступить к работе.
Упаковка | Платформы | Установка/Использование |
---|---|---|
Генератор отчетов | .NET Core >=8,0 .NET Framework 4.7 | Используйте этот пакет, если ваш проект основан на .NET Framework или .NET Core и вы хотите использовать ReportGenerator через командную строку или сценарий сборки. Использование dotnet $(UserProfile).nugetpackagesreportgeneratorxyztoolsnet8.0ReportGenerator.dll [options] $(UserProfile).nugetpackagesreportgeneratorxyztoolsnet8.0ReportGenerator.exe [options] $(UserProfile).nugetpackagesreportgeneratorxyztoolsnet47ReportGenerator.exe [options] |
dotnet-reportgenerator-globaltool | .NET Core >=8,0 | Используйте этот пакет, если ваш проект основан на .NET Core и вы хотите использовать ReportGenerator как (глобальный) «DotnetTool». Установка 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 Использование reportgenerator [options] toolsreportgenerator.exe [options] dotnet reportgenerator [options] |
ReportGenerator.Core | .NET Стандарт 2.0 | Используйте этот пакет, если вы хотите написать собственный плагин для ReportGenerator или если вы хотите вызвать/выполнить ReportGenerator в своей базе кода. Разработка плагинов Пользовательские отчеты Пользовательское хранилище истории |
Расширение Azure DevOps | .NET Core >=8,0 | Добавьте расширение Azure DevOps в свой конвейер сборки. Узнать больше |
Действия GitHub | .NET Core >=8,0 | Добавьте действие GitHub в свой конвейер сборки. Узнать больше |
Используйте онлайн-инструмент настройки, чтобы быстро приступить к работе.
Более продвинутые настройки описаны в вики.
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.*"
Все вышеуказанные параметры также можно сохранить в файле .netconfig в разделе [ReportGenerator]
. Примеры:
[ ReportGenerator ]
reports = coverage.xml
targetdir = " C: \ report "
reporttypes = Latex,HtmlSummary
assemblyfilters = +Test,-Test
classfilters = +Test2,-Test2
Все варианты множественного числа также могут быть указаны как несколько записей в единственном числе, например:
[ 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
Добавление/удаление значений с помощью 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
Конечно, не менее тривиально просто отредактировать файл .netconfig
вручную.
Также существует задача MSBuild:
<? 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 >
Параметры задачи MSBuild можно дополнить .netconfig
, если он используется. Это означает, что параметры можно опустить, если они предоставляются через .netconfig
, что полезно при повторном использовании фиксированных настроек в нескольких проектах в решении, где задача MSBuild предоставляет только динамические значения для текущего проекта:
Учитывая следующий .netconfig
:
[ ReportGenerator ]
reporttypes = Html ; Latex
targetdirectory = report
historydirectory = history
assemblyfilters = +Include ; -Excluded
verbosityLevel = Verbose
Вышеупомянутую цель можно упростить следующим образом:
< Target Name = " Coverage " >
< ItemGroup >
< CoverageFiles Include = " OpenCover.xml " />
</ ItemGroup >
< ReportGenerator ProjectDirectory = " $(MSBuildProjectDirectory) "
ReportFiles = " @(CoverageFiles) "
Plugins = " CustomReports.dll " />
</ Target >
ReportGenerator поддерживает несколько форматов ввода и вывода.
В вики описаны различные форматы вывода, или вы можете скачать примеры отчетов для всех поддерживаемых форматов вывода.
Если вам нужен собственный формат, вы можете создать плагин.
Форматы ввода | Выходные форматы |
---|---|
|
|
На скриншотах показаны два фрагмента сформированных отчетов: