├── .github ├── FUNDING.yml ├── ISSUE_TEMPLATE │ └── bug_report.md ├── dependabot.yml └── workflows │ ├── ci.yml │ ├── codeql.yml │ └── depsreview.yml ├── CODE_OF_CONDUCT.md ├── LICENSE.txt ├── README.md ├── docs ├── 404.html ├── CNAME ├── contact.html ├── enterprise.html ├── favicon.ico ├── features.html ├── getstarted.html ├── index.html ├── main-NKVZYJN2.js ├── media │ ├── fa-brands-400-D7ILJVZN.ttf │ ├── fa-brands-400-LVJDN62F.woff2 │ ├── fa-regular-400-MSZXGDVO.woff2 │ ├── fa-regular-400-SWUKRL5F.ttf │ ├── fa-solid-900-6AQDZ7HZ.ttf │ ├── fa-solid-900-MEK224IN.woff2 │ ├── fa-v4compatibility-4EBDKFJT.ttf │ ├── fa-v4compatibility-Y4OS5Y3J.woff2 │ ├── open-sans-v27-latin-300-3K33CZTH.eot │ ├── open-sans-v27-latin-300-GN2OJ7PN.woff │ ├── open-sans-v27-latin-300-JO4FCBWF.ttf │ ├── open-sans-v27-latin-300-SGSQWT4E.woff2 │ ├── open-sans-v27-latin-300-SXTIAN3M.svg │ ├── open-sans-v27-latin-700-3746WH43.woff2 │ ├── open-sans-v27-latin-700-E52NVK65.svg │ ├── open-sans-v27-latin-700-GFFV5PH2.woff │ ├── open-sans-v27-latin-700-H7XDDMOV.ttf │ ├── open-sans-v27-latin-700-KVRNQACR.eot │ ├── open-sans-v27-latin-regular-GK7QWCTL.svg │ ├── open-sans-v27-latin-regular-IWTNICQR.woff2 │ ├── open-sans-v27-latin-regular-MZHZAVIX.ttf │ ├── open-sans-v27-latin-regular-NOTFULT5.eot │ └── open-sans-v27-latin-regular-OST77QDO.woff ├── polyfills-EONH2QZO.js ├── pro.html ├── resources │ ├── CustomExtensions.zip │ ├── CustomExtensions_v4.zip │ ├── SampleReports.zip │ ├── VSTS │ │ ├── 01_Bat.png │ │ ├── 02_Test_Results.png │ │ ├── 03_Publish_Code_Coverage.png │ │ ├── 04_Build_Result.png │ │ ├── Build_Order.png │ │ └── VSTS_CoverageSample.zip │ ├── badge.svg │ ├── enterprise.svg │ ├── enterprise │ │ ├── confirmation@2x.webp │ │ ├── email@2x.webp │ │ ├── invoice.pdf │ │ └── invoice@2x.webp │ ├── features │ │ ├── details@1x.webp │ │ ├── details@2x.webp │ │ ├── history@1x.webp │ │ ├── history@2x.webp │ │ ├── metrics_details@1x.webp │ │ ├── metrics_details@2x.webp │ │ ├── metrics_summary@1x.webp │ │ ├── metrics_summary@2x.webp │ │ ├── quota@1x.webp │ │ ├── quota@2x.webp │ │ ├── riskhotspots@1x.webp │ │ ├── riskhotspots@2x.webp │ │ ├── summary@1x.webp │ │ └── summary@2x.webp │ ├── individual.svg │ ├── input_output.png │ ├── logo.png │ ├── logo.svg │ ├── logo_512.png │ ├── logo_cli_512.png │ ├── logo_global_512.png │ ├── logo_plugin_512.png │ ├── metrics.png │ ├── portrait_600.jpg │ ├── reports │ │ ├── Badges │ │ │ ├── badge_branchcoverage.svg │ │ │ ├── badge_combined.svg │ │ │ ├── badge_fullmethodcoverage.svg │ │ │ ├── badge_linecoverage.svg │ │ │ ├── badge_methodcoverage.svg │ │ │ ├── badge_shieldsio_branchcoverage_blue.svg │ │ │ ├── badge_shieldsio_branchcoverage_brightgreen.svg │ │ │ ├── badge_shieldsio_branchcoverage_green.svg │ │ │ ├── badge_shieldsio_branchcoverage_lightgrey.svg │ │ │ ├── badge_shieldsio_branchcoverage_orange.svg │ │ │ ├── badge_shieldsio_branchcoverage_red.svg │ │ │ ├── badge_shieldsio_branchcoverage_yellow.svg │ │ │ ├── badge_shieldsio_branchcoverage_yellowgreen.svg │ │ │ ├── badge_shieldsio_fullmethodcoverage_blue.svg │ │ │ ├── badge_shieldsio_fullmethodcoverage_brightgreen.svg │ │ │ ├── badge_shieldsio_fullmethodcoverage_green.svg │ │ │ ├── badge_shieldsio_fullmethodcoverage_lightgrey.svg │ │ │ ├── badge_shieldsio_fullmethodcoverage_orange.svg │ │ │ ├── badge_shieldsio_fullmethodcoverage_red.svg │ │ │ ├── badge_shieldsio_fullmethodcoverage_yellow.svg │ │ │ ├── badge_shieldsio_fullmethodcoverage_yellowgreen.svg │ │ │ ├── badge_shieldsio_linecoverage_blue.svg │ │ │ ├── badge_shieldsio_linecoverage_brightgreen.svg │ │ │ ├── badge_shieldsio_linecoverage_green.svg │ │ │ ├── badge_shieldsio_linecoverage_lightgrey.svg │ │ │ ├── badge_shieldsio_linecoverage_orange.svg │ │ │ ├── badge_shieldsio_linecoverage_red.svg │ │ │ ├── badge_shieldsio_linecoverage_yellow.svg │ │ │ ├── badge_shieldsio_linecoverage_yellowgreen.svg │ │ │ ├── badge_shieldsio_methodcoverage_blue.svg │ │ │ ├── badge_shieldsio_methodcoverage_brightgreen.svg │ │ │ ├── badge_shieldsio_methodcoverage_green.svg │ │ │ ├── badge_shieldsio_methodcoverage_lightgrey.svg │ │ │ ├── badge_shieldsio_methodcoverage_orange.svg │ │ │ ├── badge_shieldsio_methodcoverage_red.svg │ │ │ ├── badge_shieldsio_methodcoverage_yellow.svg │ │ │ ├── badge_shieldsio_methodcoverage_yellowgreen.svg │ │ │ └── index.html │ │ ├── Clover │ │ │ └── Clover.xml │ │ ├── Cobertura │ │ │ └── Cobertura.xml │ │ ├── CodeClimate │ │ │ └── codeclimate.json │ │ ├── CsvSummary │ │ │ └── Summary.csv │ │ ├── Html │ │ │ ├── Sample_PartialClass.html │ │ │ ├── Sample_Program.html │ │ │ ├── Sample_TestClass.html │ │ │ ├── Sample_TestClass2.html │ │ │ ├── class.js │ │ │ ├── icon_cog.svg │ │ │ ├── icon_cog_dark.svg │ │ │ ├── icon_cube.svg │ │ │ ├── icon_cube_dark.svg │ │ │ ├── icon_down-dir_active.svg │ │ │ ├── icon_down-dir_active_dark.svg │ │ │ ├── icon_fork.svg │ │ │ ├── icon_fork_dark.svg │ │ │ ├── icon_info-circled.svg │ │ │ ├── icon_info-circled_dark.svg │ │ │ ├── icon_minus.svg │ │ │ ├── icon_minus_dark.svg │ │ │ ├── icon_plus.svg │ │ │ ├── icon_plus_dark.svg │ │ │ ├── icon_search-minus.svg │ │ │ ├── icon_search-minus_dark.svg │ │ │ ├── icon_search-plus.svg │ │ │ ├── icon_search-plus_dark.svg │ │ │ ├── icon_sponsor.svg │ │ │ ├── icon_star.svg │ │ │ ├── icon_star_dark.svg │ │ │ ├── icon_up-dir.svg │ │ │ ├── icon_up-dir_active.svg │ │ │ ├── icon_up-down-dir.svg │ │ │ ├── icon_up-down-dir_dark.svg │ │ │ ├── icon_wrench.svg │ │ │ ├── icon_wrench_dark.svg │ │ │ ├── index.html │ │ │ ├── main.js │ │ │ └── report.css │ │ ├── HtmlChart │ │ │ ├── CoverageHistory.htm │ │ │ └── CoverageHistory.html │ │ ├── HtmlInline │ │ │ ├── Sample_PartialClass.html │ │ │ ├── Sample_Program.html │ │ │ ├── Sample_TestClass.html │ │ │ ├── Sample_TestClass2.html │ │ │ └── index.html │ │ ├── HtmlInline_AzurePipelines │ │ │ ├── Sample_PartialClass.html │ │ │ ├── Sample_Program.html │ │ │ ├── Sample_TestClass.html │ │ │ ├── Sample_TestClass2.html │ │ │ └── index.html │ │ ├── HtmlInline_AzurePipelines_Dark │ │ │ ├── Sample_PartialClass.html │ │ │ ├── Sample_Program.html │ │ │ ├── Sample_TestClass.html │ │ │ ├── Sample_TestClass2.html │ │ │ └── index.html │ │ ├── HtmlInline_AzurePipelines_Light │ │ │ ├── Sample_PartialClass.html │ │ │ ├── Sample_Program.html │ │ │ ├── Sample_TestClass.html │ │ │ ├── Sample_TestClass2.html │ │ │ └── index.html │ │ ├── HtmlSummary │ │ │ └── summary.html │ │ ├── Html_BlueRed │ │ │ ├── Sample_PartialClass.html │ │ │ ├── Sample_Program.html │ │ │ ├── Sample_TestClass.html │ │ │ ├── Sample_TestClass2.html │ │ │ ├── class.js │ │ │ ├── icon_cog.svg │ │ │ ├── icon_cog_dark.svg │ │ │ ├── icon_cube.svg │ │ │ ├── icon_cube_dark.svg │ │ │ ├── icon_down-dir_active.svg │ │ │ ├── icon_down-dir_active_dark.svg │ │ │ ├── icon_fork.svg │ │ │ ├── icon_fork_dark.svg │ │ │ ├── icon_info-circled.svg │ │ │ ├── icon_info-circled_dark.svg │ │ │ ├── icon_minus.svg │ │ │ ├── icon_minus_dark.svg │ │ │ ├── icon_plus.svg │ │ │ ├── icon_plus_dark.svg │ │ │ ├── icon_search-minus.svg │ │ │ ├── icon_search-minus_dark.svg │ │ │ ├── icon_search-plus.svg │ │ │ ├── icon_search-plus_dark.svg │ │ │ ├── icon_sponsor.svg │ │ │ ├── icon_star.svg │ │ │ ├── icon_star_dark.svg │ │ │ ├── icon_up-dir.svg │ │ │ ├── icon_up-dir_active.svg │ │ │ ├── icon_up-down-dir.svg │ │ │ ├── icon_up-down-dir_dark.svg │ │ │ ├── icon_wrench.svg │ │ │ ├── icon_wrench_dark.svg │ │ │ ├── index.html │ │ │ ├── main.js │ │ │ └── report.css │ │ ├── Html_BlueRed_Summary │ │ │ └── summary.html │ │ ├── Html_Dark │ │ │ ├── Sample_PartialClass.html │ │ │ ├── Sample_Program.html │ │ │ ├── Sample_TestClass.html │ │ │ ├── Sample_TestClass2.html │ │ │ ├── class.js │ │ │ ├── icon_cog.svg │ │ │ ├── icon_cog_dark.svg │ │ │ ├── icon_cube.svg │ │ │ ├── icon_cube_dark.svg │ │ │ ├── icon_down-dir_active.svg │ │ │ ├── icon_down-dir_active_dark.svg │ │ │ ├── icon_fork.svg │ │ │ ├── icon_fork_dark.svg │ │ │ ├── icon_info-circled.svg │ │ │ ├── icon_info-circled_dark.svg │ │ │ ├── icon_minus.svg │ │ │ ├── icon_minus_dark.svg │ │ │ ├── icon_plus.svg │ │ │ ├── icon_plus_dark.svg │ │ │ ├── icon_search-minus.svg │ │ │ ├── icon_search-minus_dark.svg │ │ │ ├── icon_search-plus.svg │ │ │ ├── icon_search-plus_dark.svg │ │ │ ├── icon_sponsor.svg │ │ │ ├── icon_star.svg │ │ │ ├── icon_star_dark.svg │ │ │ ├── icon_up-dir.svg │ │ │ ├── icon_up-dir_active.svg │ │ │ ├── icon_up-down-dir.svg │ │ │ ├── icon_up-down-dir_dark.svg │ │ │ ├── icon_wrench.svg │ │ │ ├── icon_wrench_dark.svg │ │ │ ├── index.html │ │ │ ├── main.js │ │ │ └── report.css │ │ ├── Html_Light │ │ │ ├── Sample_PartialClass.html │ │ │ ├── Sample_Program.html │ │ │ ├── Sample_TestClass.html │ │ │ ├── Sample_TestClass2.html │ │ │ ├── class.js │ │ │ ├── icon_cog.svg │ │ │ ├── icon_cube.svg │ │ │ ├── icon_down-dir_active.svg │ │ │ ├── icon_fork.svg │ │ │ ├── icon_info-circled.svg │ │ │ ├── icon_minus.svg │ │ │ ├── icon_plus.svg │ │ │ ├── icon_search-minus.svg │ │ │ ├── icon_search-plus.svg │ │ │ ├── icon_sponsor.svg │ │ │ ├── icon_star.svg │ │ │ ├── icon_up-dir.svg │ │ │ ├── icon_up-dir_active.svg │ │ │ ├── icon_up-down-dir.svg │ │ │ ├── icon_wrench.svg │ │ │ ├── index.html │ │ │ ├── main.js │ │ │ └── report.css │ │ ├── JsonSummary │ │ │ └── Summary.json │ │ ├── Latex │ │ │ └── Summary.tex │ │ ├── LatexSummary │ │ │ └── Summary.tex │ │ ├── MHtml │ │ │ └── Summary.mht │ │ ├── MarkdownAssembliesSummary │ │ │ └── Summary.md │ │ ├── MarkdownDeltaSummary │ │ │ └── DeltaSummary.md │ │ ├── MarkdownSummary │ │ │ └── Summary.md │ │ ├── MarkdownSummaryGithub │ │ │ └── SummaryGithub.md │ │ ├── OpenCover │ │ │ └── OpenCover.xml │ │ ├── SonarQube │ │ │ └── SonarQube.xml │ │ ├── SvgChart │ │ │ └── CoverageHistory.svg │ │ ├── TextDeltaSummary │ │ │ └── DeltaSummary.txt │ │ ├── TextSummary │ │ │ └── Summary.txt │ │ ├── Xml │ │ │ ├── Sample_PartialClass.xml │ │ │ ├── Sample_Program.xml │ │ │ ├── Sample_TestClass.xml │ │ │ ├── Sample_TestClass2.xml │ │ │ └── Summary.xml │ │ ├── XmlSummary │ │ │ └── Summary.xml │ │ ├── index.html │ │ └── lcov │ │ │ └── lcov.info │ ├── screenshot1.png │ ├── screenshot1.webp │ ├── screenshot1@2x.webp │ ├── screenshot1_dark.png │ ├── screenshot1_dark.webp │ ├── screenshot1_dark@2x.webp │ ├── screenshot2.png │ ├── screenshot2.webp │ ├── screenshot2@2x.webp │ ├── screenshot2_dark.png │ ├── screenshot2_dark.webp │ ├── screenshot2_dark@2x.webp │ ├── team.svg │ ├── trial.svg │ ├── twitter_light.webp │ └── unlimited.svg ├── robots.txt ├── scripts-EEEIPNC3.js ├── sitemap.xml ├── styles-GXQS5ZM2.css └── usage.html ├── global.json └── src ├── .editorconfig ├── .gitignore ├── AngularComponents ├── .gitignore ├── README.md ├── angular.json ├── package-lock.json ├── package.json ├── src │ ├── app │ │ ├── app.module.ts │ │ ├── components │ │ │ ├── coverageinfo │ │ │ │ ├── class-row.component.ts │ │ │ │ ├── codeelement-row.component.ts │ │ │ │ ├── coverage-bar.component.ts │ │ │ │ ├── coverage-history-chart.component.ts │ │ │ │ ├── coverage-info.component.ts │ │ │ │ ├── data │ │ │ │ │ ├── assembly.class.ts │ │ │ │ │ ├── class.class.ts │ │ │ │ │ ├── coverageinfo-settings.class.ts │ │ │ │ │ ├── historic-coverage.class.ts │ │ │ │ │ └── metric.class.ts │ │ │ │ ├── popup.component.ts │ │ │ │ ├── pro-button.component.ts │ │ │ │ └── viewmodels │ │ │ │ │ ├── class-viewmodel.class.ts │ │ │ │ │ ├── codelement-viewmodel.class.ts │ │ │ │ │ ├── elementbase.class.ts │ │ │ │ │ └── helper.class.ts │ │ │ ├── globalhistorystate.ts │ │ │ └── riskhotspots │ │ │ │ ├── data │ │ │ │ ├── metric.class.ts │ │ │ │ ├── riskhotspot-metric.class.ts │ │ │ │ ├── riskhotspot.class.ts │ │ │ │ └── riskhotspots-settings.class.ts │ │ │ │ └── riskhotspots.component.ts │ │ └── infrastructure │ │ │ └── windowref.service.ts │ ├── assets │ │ ├── .gitkeep │ │ ├── icon_cog.svg │ │ ├── icon_cog_dark.svg │ │ ├── icon_down-dir_active.svg │ │ ├── icon_info-circled.svg │ │ ├── icon_minus.svg │ │ ├── icon_plus.svg │ │ ├── icon_up-dir.svg │ │ ├── icon_up-dir_active.svg │ │ └── report.css │ ├── class.htm │ ├── environments │ │ ├── environment.prod.ts │ │ └── environment.ts │ ├── favicon.ico │ ├── index.html │ ├── main.ts │ ├── polyfills.ts │ └── styles.css ├── tsconfig.app.json └── tsconfig.json ├── AzureDevopsTask ├── README.md ├── ReportGenerator │ ├── icon.png │ ├── package-lock.json │ ├── package.json │ ├── reportgenerator.ts │ ├── task.json │ └── tsconfig.json ├── build.bat ├── icon.png ├── img │ ├── screenshot1.png │ └── screenshot2.png ├── package-lock.json ├── package.json └── vss-extension.json ├── AzureDevopsTaskTest ├── README.md ├── ReportGenerator │ ├── icon.png │ ├── package-lock.json │ ├── package.json │ ├── reportgenerator.ts │ ├── task.json │ └── tsconfig.json ├── build.bat ├── icon.png ├── img │ ├── screenshot1.png │ └── screenshot2.png ├── package-lock.json ├── package.json └── vss-extension.json ├── Deployment ├── chocolatey │ ├── VERIFICATION.txt │ └── reportgenerator.portable.nuspec ├── logo_64.png ├── logo_global_64.png ├── logo_plugin_64.png └── nuget │ ├── DotnetToolSettings.xml │ ├── Readme_ReportGenerator.Core.md │ ├── Readme_ReportGenerator.Core.txt │ ├── Readme_ReportGenerator.md │ ├── Readme_dotnet-reportgenerator-globaltool.md │ ├── ReportGenerator.Core.nuspec │ ├── ReportGenerator.nuspec │ ├── ReportGenerator.props │ └── dotnet-reportgenerator-globaltool.nuspec ├── Directory.Build.props ├── Readme.txt ├── ReportGenerator.Console.NetCore ├── Program.cs ├── ProgramIcon.ico ├── Properties │ └── launchSettings.json ├── ReportGenerator.Console.NetCore.csproj └── runtimeconfig.template.json ├── ReportGenerator.Console ├── Program.cs ├── ProgramIcon.ico ├── Properties │ └── AssemblyInfo.cs ├── ReportGenerator.Console.Net.csproj └── app.config ├── ReportGenerator.Core.Test ├── Common │ ├── Encodings │ │ ├── ansii.txt │ │ ├── ascii.txt │ │ ├── latin1.txt │ │ ├── unicode_uft16_be.txt │ │ ├── unicode_uft16_le.txt │ │ ├── utf8.txt │ │ └── utf8_bom.txt │ ├── EnumerableExtensionsTest.cs │ ├── FileHelperTest.cs │ ├── GlobbingFileSearchTest.cs │ ├── MathExtensionsTest.cs │ ├── StringExtensionsTest.cs │ └── WildCardFileSearchTest.cs ├── FileManager.cs ├── Issues │ └── Issue235_Cobertura.cs ├── LimitedVerbosityFixture.cs ├── MsBuildTest.cs ├── MsBuildTestScript.proj ├── MsBuildTestScript_NetCore.proj ├── Parser │ ├── Analysis │ │ ├── AssemblyTest.cs │ │ ├── BranchTest.cs │ │ ├── ClassTest.cs │ │ ├── CodeFileTest.cs │ │ └── MethodMetricTest.cs │ ├── ClassNameParserTest.cs │ ├── CloverParserTest.cs │ ├── CoberturaParserTest.cs │ ├── CoverageReportParserTest.cs │ ├── DotCoverParserTest.cs │ ├── DynamicCodeCoverageParserTest.cs │ ├── FileReading │ │ ├── AltCoverEmbeddedFileReaderTest.cs │ │ └── LocalFileReaderTest.cs │ ├── Filtering │ │ └── DefaultFilterTest.cs │ ├── GCovParserTest.cs │ ├── JaCoCoParserTest.cs │ ├── LCovParserTest.cs │ ├── MProfParserTest.cs │ ├── NCoverParserTest.cs │ ├── OpenCoverParserTest.cs │ ├── ParserResultTest.cs │ ├── Preprocessing │ │ ├── CoberturaReportPreprocessorTest.cs │ │ ├── DotCoverReportPreprocessorTest.cs │ │ ├── DynamicCodeCoverageReportPreprocessorTest.cs │ │ ├── JaCoCoReportPreprocessorTest.cs │ │ ├── OpenCoverReportPreprocessorTest.cs │ │ └── VisualStudioReportPreprocessorTest.cs │ ├── VisualStudioParserTest_2010.cs │ ├── VisualStudioParserTest_2012.cs │ └── VisualStudioParserTest_2013.cs ├── ProgramTest.cs ├── ReportConfigurationBuilderTest.cs ├── ReportConfigurationTest.cs ├── ReportConfigurationValidatorTest.cs ├── ReportGenerator.Core.Test.csproj ├── Reporting │ └── ReportBuilderFactoryTest.cs └── Settings.StyleCop ├── ReportGenerator.Core ├── CodeAnalysis │ ├── IRiskHotspotsAnalyzer.cs │ ├── MetricStatus.cs │ ├── RiskHotspot.cs │ ├── RiskHotspotAnalysisResult.cs │ ├── RiskHotspotsAnalysisThresholds.cs │ └── RiskHotspotsAnalyzer.cs ├── CommandLineArgumentNames.cs ├── Common │ ├── EnumerableExtensions.cs │ ├── ExceptionExtensions.cs │ ├── FileHelper.cs │ ├── Glob.cs │ ├── GlobbingFileSearch.cs │ ├── LinqExtensions.cs │ ├── MathExtensions.cs │ ├── StringExtensions.cs │ └── WildCardFileSearch.cs ├── DotNetConfigSettingNames.cs ├── Generator.cs ├── Help.cs ├── IReportGenerator.cs ├── Licensing │ ├── License.cs │ ├── LicenseType.cs │ ├── LicenseValidator.cs │ └── LicenseWrapper.cs ├── Logging │ ├── ConsoleLogger.cs │ ├── ConsoleLoggerFactory.cs │ ├── DelegateLogger.cs │ ├── DelegateLoggerFactory.cs │ ├── ILogger.cs │ ├── ILoggerFactory.cs │ ├── LoggerFactory.cs │ └── VerbosityLevel.cs ├── LowCoverageException.cs ├── MaxiumRiskhotspotsThresholdsValidator.cs ├── MinimumCoverageThresholds.cs ├── MinimumCoverageThresholdsValidator.cs ├── Parser │ ├── Analysis │ │ ├── Assembly.cs │ │ ├── Branch.cs │ │ ├── Class.cs │ │ ├── CodeElement.cs │ │ ├── CodeElementType.cs │ │ ├── CodeFile.cs │ │ ├── CoverageByTrackedMethod.cs │ │ ├── FileAnalysis.cs │ │ ├── FlagsLineVisitStatus.cs │ │ ├── HistoricCoverage.cs │ │ ├── HistoricCoverages.cs │ │ ├── LineAnalysis.cs │ │ ├── LineVisitStatus.cs │ │ ├── MethodMetric.cs │ │ ├── Metric.cs │ │ ├── MetricMergeOrder.cs │ │ ├── MetricType.cs │ │ ├── ShortLineAnalysis.cs │ │ ├── SummaryResult.cs │ │ └── TestMethod.cs │ ├── ClassNameParser.cs │ ├── ClassNameParserResult.cs │ ├── CloverParser.cs │ ├── CoberturaParser.cs │ ├── CodeElementBase.cs │ ├── CoverageReportParser.cs │ ├── DotCoverParser.cs │ ├── DynamicCodeCoverageParser.cs │ ├── FileReading │ │ ├── AltCoverEmbeddedFileReader.cs │ │ ├── CachingFileReader.cs │ │ ├── IFileReader.cs │ │ └── LocalFileReader.cs │ ├── Filtering │ │ ├── DefaultFilter.cs │ │ └── IFilter.cs │ ├── GCovParser.cs │ ├── JaCoCoParser.cs │ ├── LCovParser.cs │ ├── MProfParser.cs │ ├── NCoverParser.cs │ ├── OpenCoverParser.cs │ ├── ParserBase.cs │ ├── ParserResult.cs │ ├── Preprocessing │ │ ├── CloverReportPreprocessor.cs │ │ ├── CoberturaReportPreprocessor.cs │ │ ├── DotCoverReportPreprocessor.cs │ │ ├── DynamicCodeCoverageReportPreprocessor.cs │ │ ├── GCovReportPreprocessor..cs │ │ ├── JaCoCoReportPreprocessor.cs │ │ ├── OpenCoverReportPreprocessor.cs │ │ └── VisualStudioReportPreprocessor.cs │ ├── UnsupportedParserException.cs │ └── VisualStudioParser.cs ├── Plugin │ ├── DefaultAssemblyLoader.cs │ ├── FileUnblocker.cs │ ├── IAssemblyLoader.cs │ ├── IPluginLoader.cs │ ├── ReflectionPluginLoader.cs │ └── ReflectionWrapperAssemblyLoader.cs ├── Program.cs ├── ProgramIcon.ico ├── Properties │ ├── AssemblyInfo.cs │ ├── Help.Designer.cs │ ├── Help.resx │ ├── ReportResources.Designer.cs │ ├── ReportResources.resx │ ├── Resources.Designer.cs │ └── Resources.resx ├── ReportConfiguration.cs ├── ReportConfigurationBuilder.cs ├── ReportConfigurationValidator.cs ├── ReportContext.cs ├── ReportGenerator.Core.csproj ├── Reporting │ ├── Builders │ │ ├── BadgeReportBuilder.cs │ │ ├── CloverReportBuilder.cs │ │ ├── CoberturaReportBuilder.cs │ │ ├── CodeClimateReportBuilder.cs │ │ ├── CsvSummaryReportBuilder.cs │ │ ├── HtmlBlueRedReportBuilder.cs │ │ ├── HtmlBlueRedSummaryReportBuilder.cs │ │ ├── HtmlChartReportBuilder.cs │ │ ├── HtmlDarkReportBuilder.cs │ │ ├── HtmlInlineAzurePipelinesDarkReportBuilder.cs │ │ ├── HtmlInlineAzurePipelinesLightReportBuilder.cs │ │ ├── HtmlInlineAzurePipelinesReportBuilder.cs │ │ ├── HtmlInlineCssAndJavaScriptReportBuilder.cs │ │ ├── HtmlLightReportBuilder.cs │ │ ├── HtmlReportBuilder.cs │ │ ├── HtmlReportBuilderBase.cs │ │ ├── HtmlSummaryReportBuilder.cs │ │ ├── JsonSummaryReportBuilder.cs │ │ ├── LCovSummaryReportBuilder.cs │ │ ├── LatexReportBuilder.cs │ │ ├── LatexReportBuilderBase.cs │ │ ├── LatexSummaryReportBuilder.cs │ │ ├── MarkdownAssembliesSummaryReportBuilder.cs │ │ ├── MarkdownDeltaSummaryReportBuilder.cs │ │ ├── MarkdownSummaryGithubReportBuilder.cs │ │ ├── MarkdownSummaryReportBuilder.cs │ │ ├── MhtmlReportBuilder.cs │ │ ├── OpenCoverReportBuilder.cs │ │ ├── PngChartReportBuilder.cs │ │ ├── Rendering │ │ │ ├── Card.cs │ │ │ ├── CardLineItem.cs │ │ │ ├── CardLineItemAlignment.cs │ │ │ ├── HtmlMode.cs │ │ │ ├── HtmlRenderer.cs │ │ │ ├── IHtmlRenderer.cs │ │ │ ├── ILatexRenderer.cs │ │ │ ├── LatexRenderer.cs │ │ │ ├── StringHelper.cs │ │ │ ├── SvgHistoryChartRenderer.cs │ │ │ └── resources │ │ │ │ ├── chartist.js │ │ │ │ ├── chartist.min.css │ │ │ │ ├── chartist.min.js │ │ │ │ ├── custom-azurepipelines.css │ │ │ │ ├── custom-azurepipelines_adaptive.css │ │ │ │ ├── custom-azurepipelines_dark.css │ │ │ │ ├── custom.css │ │ │ │ ├── custom.js │ │ │ │ ├── custom_adaptive.css │ │ │ │ ├── custom_bluered.css │ │ │ │ ├── custom_dark.css │ │ │ │ ├── main.js │ │ │ │ ├── polyfills.js │ │ │ │ └── runtime.js │ │ ├── SonarQubeBuilder.cs │ │ ├── SvgChartReportBuilder.cs │ │ ├── TeamCitySummaryReportBuilder.cs │ │ ├── TextDeltaSummaryReportBuilder.cs │ │ ├── TextSummaryReportBuilder.cs │ │ ├── XmlReportBuilder.cs │ │ └── XmlSummaryReportBuilder.cs │ ├── GitHelper.cs │ ├── GitInformation.cs │ ├── History │ │ ├── FileHistoryStorage.cs │ │ ├── HistoryParser.cs │ │ ├── HistoryReportGenerator.cs │ │ ├── HistoryStorageFactory.cs │ │ └── IHistoryStorage.cs │ ├── IReportBuilder.cs │ ├── IReportBuilderFactory.cs │ ├── IReportConfiguration.cs │ ├── IReportContext.cs │ ├── ReportBuilderFactory.cs │ └── ReportGenerator.cs ├── RiskhotspotThresholdException.cs ├── Settings.cs ├── appsettings.json └── stylecop.ruleset ├── ReportGenerator.DotnetCorePluginLoader ├── DotnetCoreAssemblyLoader.cs └── ReportGenerator.DotnetCorePluginLoader.csproj ├── ReportGenerator.DotnetGlobalTool ├── Program.cs ├── ProgramIcon.ico ├── ReportGenerator.DotnetGlobalTool.csproj └── runtimeconfig.template.json ├── ReportGenerator.MSBuild ├── AssemblyResolver.cs ├── ReportGenerator.MSBuild.csproj └── ReportGenerator.cs ├── ReportGenerator.sln ├── ReportGenerator.snk ├── Testprojects ├── C++ │ ├── Projects │ │ ├── build.sh │ │ ├── main.cpp │ │ └── sub │ │ │ └── calculator.cpp │ └── Reports │ │ ├── Cobertura_CPPCoverage.xml │ │ ├── gcov │ │ ├── basic │ │ │ ├── calculator.cpp.gcov │ │ │ └── main.cpp.gcov │ │ ├── branch_counts │ │ │ ├── calculator.cpp.gcov │ │ │ └── main.cpp.gcov │ │ ├── branch_probabilities │ │ │ ├── calculator.cpp.gcov │ │ │ └── main.cpp.gcov │ │ └── branch_unconditional │ │ │ ├── calculator.cpp.gcov │ │ │ └── main.cpp.gcov │ │ └── lcov.info ├── CSharp │ ├── Project │ │ ├── AbstractClass.cs │ │ ├── AnalyzerTestClass.cs │ │ ├── AsyncClass.cs │ │ ├── ClassWithExcludes.cs │ │ ├── CodeContract_Contract.cs │ │ ├── CodeContract_Interface.cs │ │ ├── CodeContract_Target.cs │ │ ├── CoverageExcludeAttribute.cs │ │ ├── GenericClass.cs │ │ ├── NotMatchingFileName.cs │ │ ├── PartialClass.cs │ │ ├── PartialClass2.cs │ │ ├── PartialClassWithAutoProperties.cs │ │ ├── PartialClassWithAutoProperties2.cs │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── AssemblyInfo.cs │ │ ├── TestClass.cs │ │ ├── TestClass2.cs │ │ ├── Test_CSharp.csproj │ │ └── app.config │ ├── Project_DotNetCore │ │ ├── Test.sln │ │ ├── Test │ │ │ ├── AbstractClass.cs │ │ │ ├── AnalyzerTestClass.cs │ │ │ ├── AsyncClass.cs │ │ │ ├── ClassWithExcludes.cs │ │ │ ├── ClassWithLocalFunctions.cs │ │ │ ├── CodeContract_Contract.cs │ │ │ ├── CodeContract_Interface.cs │ │ │ ├── CodeContract_Target.cs │ │ │ ├── CoverageExcludeAttribute.cs │ │ │ ├── GenericAsyncClass.cs │ │ │ ├── GenericClass.cs │ │ │ ├── NotMatchingFileName.cs │ │ │ ├── PartialClass.cs │ │ │ ├── PartialClass2.cs │ │ │ ├── PartialClassWithAutoProperties.cs │ │ │ ├── PartialClassWithAutoProperties2.cs │ │ │ ├── Program.cs │ │ │ ├── Test.csproj │ │ │ ├── TestClass.cs │ │ │ └── TestClass2.cs │ │ └── UnitTests │ │ │ ├── UnitTest.cs │ │ │ └── UnitTests.csproj │ └── Reports │ │ ├── Cobertura_altcover.xml │ │ ├── Cobertura_coverlet.xml │ │ ├── Cobertura_dotnet-coverage.xml │ │ ├── Cobertura_dotnettest.xml │ │ ├── Cobertura_dotnettest_old.xml │ │ ├── DynamicCodeCoverage.xml │ │ ├── MultiDynamicCodeCoverage.xml │ │ ├── MultiNCover1.5.8.xml │ │ ├── MultiOpenCover.xml │ │ ├── MultiPartcover2.2.xml │ │ ├── MultiPartcover2.3.xml │ │ ├── MultiVisualStudio2010.coveragexml │ │ ├── MultidotCover.xml │ │ ├── NCover1.5.8.xml │ │ ├── OpenCover.xml │ │ ├── OpenCoverWithEmbeddedSource.xml │ │ ├── OpenCoverWithTrackedMethods.xml │ │ ├── OpenCover_altcover.xml │ │ ├── OpenCover_coverlet.xml │ │ ├── Partcover2.2.xml │ │ ├── Partcover2.3.0.35109.xml │ │ ├── Partcover2.3.xml │ │ ├── Partcover4.0.10620.xml │ │ ├── VisualStudio2010.coveragexml │ │ ├── VisualStudio2012.coveragexml │ │ ├── VisualStudio2013.coveragexml │ │ ├── VisualStudio2022.coveragexml │ │ ├── dotCover.xml │ │ ├── lcov.info │ │ └── mprof-report.xml ├── Clover.ps1 ├── Cobertura.ps1 ├── DynamicCodeCoverage.ps1 ├── FSharp │ ├── Project │ │ ├── Module1.fs │ │ ├── Program.fs │ │ └── Test_FSharp.fsproj │ └── Reports │ │ ├── DynamicCodeCoverage.xml │ │ ├── OpenCover.xml │ │ ├── VisualStudio2010.coveragexml │ │ ├── VisualStudio2013.coveragexml │ │ └── dotCover.xml ├── JaCoCo.ps1 ├── JaCoCo_Ant.xml ├── Java │ ├── Project │ │ └── test │ │ │ ├── AbstractClass.java │ │ │ ├── AbstractClass_SampleImpl1.java │ │ │ ├── AbstractClass_SampleImpl2.java │ │ │ ├── GenericClass.java │ │ │ ├── Program.java │ │ │ ├── TestClass.java │ │ │ └── sub │ │ │ └── Sub.java │ └── Reports │ │ ├── Clover_OpenClover4.3.1.xml │ │ ├── Cobertura2.1.1-MultiSource.xml │ │ ├── Cobertura2.1.1.xml │ │ ├── JaCoCo0.7.7.xml │ │ ├── JaCoCo0.8.3.xml │ │ ├── cobertura-1.9.2.xsd │ │ └── coverage-04.dtd ├── NCover1.5.8.bat ├── OpenCover.ps1 ├── Other │ ├── Clover_Groovy.xml │ ├── Clover_Istanbul.xml │ └── Cobertura_Istanbul.xml ├── PartCover2.2.bat ├── PartCover2.3.35109.bat ├── PartCover2.3.bat ├── PartCover4.0.10620.ps1 ├── altCover.ps1 ├── coverlet.ps1 ├── dotCover.ps1 ├── dotnet-coverage.ps1 └── dotnet-test.ps1 ├── build.bat ├── build.proj └── update-version.ps1 /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | github: danielpalme 2 | custom: https://paypal.me/danielpalme82 -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: Create a report to help us improve 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Describe the bug** 11 | A clear and concise description of what the bug is. 12 | 13 | **To Reproduce** 14 | The following input helps to reproduce your issue: 15 | 1. Console output of ReportGenerator 16 | 2. If the issue is related to a specific coverage file which gets parsed by ReportGenerator, you can share the file: 17 | - Publicly 18 | - By email: reportgenerator@palmmedia.de 19 | Small files can be send as an attachment. Large files should can be shared via Dropbox, Google Drive, Onedrive. 20 | Shared files are treated confidentially and will be deleted after the issue is resolved. 21 | -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | updates: 3 | # Enable version updates for Github Actions 4 | - package-ecosystem: "github-actions" 5 | directory: "/" 6 | schedule: 7 | interval: "weekly" 8 | 9 | # Enable version updates for npm 10 | - package-ecosystem: "npm" 11 | # Look for `package.json` and `lock` files in the `root` directory 12 | directory: "src/AzureDevopsTask" 13 | # Check the npm registry for updates every day (weekdays) 14 | schedule: 15 | interval: "weekly" -------------------------------------------------------------------------------- /.github/workflows/depsreview.yml: -------------------------------------------------------------------------------- 1 | name: 'Dependency Review' 2 | on: [pull_request] 3 | 4 | permissions: 5 | contents: read 6 | 7 | jobs: 8 | dependency-review: 9 | runs-on: ubuntu-latest 10 | steps: 11 | - name: 'Checkout Repository' 12 | uses: actions/checkout@v4 13 | - name: 'Dependency Review' 14 | uses: actions/dependency-review-action@v4 15 | -------------------------------------------------------------------------------- /docs/CNAME: -------------------------------------------------------------------------------- 1 | reportgenerator.io -------------------------------------------------------------------------------- /docs/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danielpalme/ReportGenerator/c68f7ccc8a96e4ba711598bedc7d8decbdb2506d/docs/favicon.ico -------------------------------------------------------------------------------- /docs/media/fa-brands-400-D7ILJVZN.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danielpalme/ReportGenerator/c68f7ccc8a96e4ba711598bedc7d8decbdb2506d/docs/media/fa-brands-400-D7ILJVZN.ttf -------------------------------------------------------------------------------- /docs/media/fa-brands-400-LVJDN62F.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danielpalme/ReportGenerator/c68f7ccc8a96e4ba711598bedc7d8decbdb2506d/docs/media/fa-brands-400-LVJDN62F.woff2 -------------------------------------------------------------------------------- /docs/media/fa-regular-400-MSZXGDVO.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danielpalme/ReportGenerator/c68f7ccc8a96e4ba711598bedc7d8decbdb2506d/docs/media/fa-regular-400-MSZXGDVO.woff2 -------------------------------------------------------------------------------- /docs/media/fa-regular-400-SWUKRL5F.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danielpalme/ReportGenerator/c68f7ccc8a96e4ba711598bedc7d8decbdb2506d/docs/media/fa-regular-400-SWUKRL5F.ttf -------------------------------------------------------------------------------- /docs/media/fa-solid-900-6AQDZ7HZ.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danielpalme/ReportGenerator/c68f7ccc8a96e4ba711598bedc7d8decbdb2506d/docs/media/fa-solid-900-6AQDZ7HZ.ttf -------------------------------------------------------------------------------- /docs/media/fa-solid-900-MEK224IN.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danielpalme/ReportGenerator/c68f7ccc8a96e4ba711598bedc7d8decbdb2506d/docs/media/fa-solid-900-MEK224IN.woff2 -------------------------------------------------------------------------------- /docs/media/fa-v4compatibility-4EBDKFJT.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danielpalme/ReportGenerator/c68f7ccc8a96e4ba711598bedc7d8decbdb2506d/docs/media/fa-v4compatibility-4EBDKFJT.ttf -------------------------------------------------------------------------------- /docs/media/fa-v4compatibility-Y4OS5Y3J.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danielpalme/ReportGenerator/c68f7ccc8a96e4ba711598bedc7d8decbdb2506d/docs/media/fa-v4compatibility-Y4OS5Y3J.woff2 -------------------------------------------------------------------------------- /docs/media/open-sans-v27-latin-300-3K33CZTH.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danielpalme/ReportGenerator/c68f7ccc8a96e4ba711598bedc7d8decbdb2506d/docs/media/open-sans-v27-latin-300-3K33CZTH.eot -------------------------------------------------------------------------------- /docs/media/open-sans-v27-latin-300-GN2OJ7PN.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danielpalme/ReportGenerator/c68f7ccc8a96e4ba711598bedc7d8decbdb2506d/docs/media/open-sans-v27-latin-300-GN2OJ7PN.woff -------------------------------------------------------------------------------- /docs/media/open-sans-v27-latin-300-JO4FCBWF.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danielpalme/ReportGenerator/c68f7ccc8a96e4ba711598bedc7d8decbdb2506d/docs/media/open-sans-v27-latin-300-JO4FCBWF.ttf -------------------------------------------------------------------------------- /docs/media/open-sans-v27-latin-300-SGSQWT4E.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danielpalme/ReportGenerator/c68f7ccc8a96e4ba711598bedc7d8decbdb2506d/docs/media/open-sans-v27-latin-300-SGSQWT4E.woff2 -------------------------------------------------------------------------------- /docs/media/open-sans-v27-latin-700-3746WH43.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danielpalme/ReportGenerator/c68f7ccc8a96e4ba711598bedc7d8decbdb2506d/docs/media/open-sans-v27-latin-700-3746WH43.woff2 -------------------------------------------------------------------------------- /docs/media/open-sans-v27-latin-700-GFFV5PH2.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danielpalme/ReportGenerator/c68f7ccc8a96e4ba711598bedc7d8decbdb2506d/docs/media/open-sans-v27-latin-700-GFFV5PH2.woff -------------------------------------------------------------------------------- /docs/media/open-sans-v27-latin-700-H7XDDMOV.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danielpalme/ReportGenerator/c68f7ccc8a96e4ba711598bedc7d8decbdb2506d/docs/media/open-sans-v27-latin-700-H7XDDMOV.ttf -------------------------------------------------------------------------------- /docs/media/open-sans-v27-latin-700-KVRNQACR.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danielpalme/ReportGenerator/c68f7ccc8a96e4ba711598bedc7d8decbdb2506d/docs/media/open-sans-v27-latin-700-KVRNQACR.eot -------------------------------------------------------------------------------- /docs/media/open-sans-v27-latin-regular-IWTNICQR.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danielpalme/ReportGenerator/c68f7ccc8a96e4ba711598bedc7d8decbdb2506d/docs/media/open-sans-v27-latin-regular-IWTNICQR.woff2 -------------------------------------------------------------------------------- /docs/media/open-sans-v27-latin-regular-MZHZAVIX.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danielpalme/ReportGenerator/c68f7ccc8a96e4ba711598bedc7d8decbdb2506d/docs/media/open-sans-v27-latin-regular-MZHZAVIX.ttf -------------------------------------------------------------------------------- /docs/media/open-sans-v27-latin-regular-NOTFULT5.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danielpalme/ReportGenerator/c68f7ccc8a96e4ba711598bedc7d8decbdb2506d/docs/media/open-sans-v27-latin-regular-NOTFULT5.eot -------------------------------------------------------------------------------- /docs/media/open-sans-v27-latin-regular-OST77QDO.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danielpalme/ReportGenerator/c68f7ccc8a96e4ba711598bedc7d8decbdb2506d/docs/media/open-sans-v27-latin-regular-OST77QDO.woff -------------------------------------------------------------------------------- /docs/resources/CustomExtensions.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danielpalme/ReportGenerator/c68f7ccc8a96e4ba711598bedc7d8decbdb2506d/docs/resources/CustomExtensions.zip -------------------------------------------------------------------------------- /docs/resources/CustomExtensions_v4.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danielpalme/ReportGenerator/c68f7ccc8a96e4ba711598bedc7d8decbdb2506d/docs/resources/CustomExtensions_v4.zip -------------------------------------------------------------------------------- /docs/resources/SampleReports.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danielpalme/ReportGenerator/c68f7ccc8a96e4ba711598bedc7d8decbdb2506d/docs/resources/SampleReports.zip -------------------------------------------------------------------------------- /docs/resources/VSTS/01_Bat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danielpalme/ReportGenerator/c68f7ccc8a96e4ba711598bedc7d8decbdb2506d/docs/resources/VSTS/01_Bat.png -------------------------------------------------------------------------------- /docs/resources/VSTS/02_Test_Results.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danielpalme/ReportGenerator/c68f7ccc8a96e4ba711598bedc7d8decbdb2506d/docs/resources/VSTS/02_Test_Results.png -------------------------------------------------------------------------------- /docs/resources/VSTS/03_Publish_Code_Coverage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danielpalme/ReportGenerator/c68f7ccc8a96e4ba711598bedc7d8decbdb2506d/docs/resources/VSTS/03_Publish_Code_Coverage.png -------------------------------------------------------------------------------- /docs/resources/VSTS/04_Build_Result.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danielpalme/ReportGenerator/c68f7ccc8a96e4ba711598bedc7d8decbdb2506d/docs/resources/VSTS/04_Build_Result.png -------------------------------------------------------------------------------- /docs/resources/VSTS/Build_Order.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danielpalme/ReportGenerator/c68f7ccc8a96e4ba711598bedc7d8decbdb2506d/docs/resources/VSTS/Build_Order.png -------------------------------------------------------------------------------- /docs/resources/VSTS/VSTS_CoverageSample.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danielpalme/ReportGenerator/c68f7ccc8a96e4ba711598bedc7d8decbdb2506d/docs/resources/VSTS/VSTS_CoverageSample.zip -------------------------------------------------------------------------------- /docs/resources/enterprise/confirmation@2x.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danielpalme/ReportGenerator/c68f7ccc8a96e4ba711598bedc7d8decbdb2506d/docs/resources/enterprise/confirmation@2x.webp -------------------------------------------------------------------------------- /docs/resources/enterprise/email@2x.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danielpalme/ReportGenerator/c68f7ccc8a96e4ba711598bedc7d8decbdb2506d/docs/resources/enterprise/email@2x.webp -------------------------------------------------------------------------------- /docs/resources/enterprise/invoice.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danielpalme/ReportGenerator/c68f7ccc8a96e4ba711598bedc7d8decbdb2506d/docs/resources/enterprise/invoice.pdf -------------------------------------------------------------------------------- /docs/resources/enterprise/invoice@2x.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danielpalme/ReportGenerator/c68f7ccc8a96e4ba711598bedc7d8decbdb2506d/docs/resources/enterprise/invoice@2x.webp -------------------------------------------------------------------------------- /docs/resources/features/details@1x.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danielpalme/ReportGenerator/c68f7ccc8a96e4ba711598bedc7d8decbdb2506d/docs/resources/features/details@1x.webp -------------------------------------------------------------------------------- /docs/resources/features/details@2x.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danielpalme/ReportGenerator/c68f7ccc8a96e4ba711598bedc7d8decbdb2506d/docs/resources/features/details@2x.webp -------------------------------------------------------------------------------- /docs/resources/features/history@1x.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danielpalme/ReportGenerator/c68f7ccc8a96e4ba711598bedc7d8decbdb2506d/docs/resources/features/history@1x.webp -------------------------------------------------------------------------------- /docs/resources/features/history@2x.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danielpalme/ReportGenerator/c68f7ccc8a96e4ba711598bedc7d8decbdb2506d/docs/resources/features/history@2x.webp -------------------------------------------------------------------------------- /docs/resources/features/metrics_details@1x.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danielpalme/ReportGenerator/c68f7ccc8a96e4ba711598bedc7d8decbdb2506d/docs/resources/features/metrics_details@1x.webp -------------------------------------------------------------------------------- /docs/resources/features/metrics_details@2x.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danielpalme/ReportGenerator/c68f7ccc8a96e4ba711598bedc7d8decbdb2506d/docs/resources/features/metrics_details@2x.webp -------------------------------------------------------------------------------- /docs/resources/features/metrics_summary@1x.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danielpalme/ReportGenerator/c68f7ccc8a96e4ba711598bedc7d8decbdb2506d/docs/resources/features/metrics_summary@1x.webp -------------------------------------------------------------------------------- /docs/resources/features/metrics_summary@2x.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danielpalme/ReportGenerator/c68f7ccc8a96e4ba711598bedc7d8decbdb2506d/docs/resources/features/metrics_summary@2x.webp -------------------------------------------------------------------------------- /docs/resources/features/quota@1x.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danielpalme/ReportGenerator/c68f7ccc8a96e4ba711598bedc7d8decbdb2506d/docs/resources/features/quota@1x.webp -------------------------------------------------------------------------------- /docs/resources/features/quota@2x.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danielpalme/ReportGenerator/c68f7ccc8a96e4ba711598bedc7d8decbdb2506d/docs/resources/features/quota@2x.webp -------------------------------------------------------------------------------- /docs/resources/features/riskhotspots@1x.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danielpalme/ReportGenerator/c68f7ccc8a96e4ba711598bedc7d8decbdb2506d/docs/resources/features/riskhotspots@1x.webp -------------------------------------------------------------------------------- /docs/resources/features/riskhotspots@2x.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danielpalme/ReportGenerator/c68f7ccc8a96e4ba711598bedc7d8decbdb2506d/docs/resources/features/riskhotspots@2x.webp -------------------------------------------------------------------------------- /docs/resources/features/summary@1x.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danielpalme/ReportGenerator/c68f7ccc8a96e4ba711598bedc7d8decbdb2506d/docs/resources/features/summary@1x.webp -------------------------------------------------------------------------------- /docs/resources/features/summary@2x.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danielpalme/ReportGenerator/c68f7ccc8a96e4ba711598bedc7d8decbdb2506d/docs/resources/features/summary@2x.webp -------------------------------------------------------------------------------- /docs/resources/individual.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /docs/resources/input_output.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danielpalme/ReportGenerator/c68f7ccc8a96e4ba711598bedc7d8decbdb2506d/docs/resources/input_output.png -------------------------------------------------------------------------------- /docs/resources/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danielpalme/ReportGenerator/c68f7ccc8a96e4ba711598bedc7d8decbdb2506d/docs/resources/logo.png -------------------------------------------------------------------------------- /docs/resources/logo_512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danielpalme/ReportGenerator/c68f7ccc8a96e4ba711598bedc7d8decbdb2506d/docs/resources/logo_512.png -------------------------------------------------------------------------------- /docs/resources/logo_cli_512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danielpalme/ReportGenerator/c68f7ccc8a96e4ba711598bedc7d8decbdb2506d/docs/resources/logo_cli_512.png -------------------------------------------------------------------------------- /docs/resources/logo_global_512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danielpalme/ReportGenerator/c68f7ccc8a96e4ba711598bedc7d8decbdb2506d/docs/resources/logo_global_512.png -------------------------------------------------------------------------------- /docs/resources/logo_plugin_512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danielpalme/ReportGenerator/c68f7ccc8a96e4ba711598bedc7d8decbdb2506d/docs/resources/logo_plugin_512.png -------------------------------------------------------------------------------- /docs/resources/metrics.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danielpalme/ReportGenerator/c68f7ccc8a96e4ba711598bedc7d8decbdb2506d/docs/resources/metrics.png -------------------------------------------------------------------------------- /docs/resources/portrait_600.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danielpalme/ReportGenerator/c68f7ccc8a96e4ba711598bedc7d8decbdb2506d/docs/resources/portrait_600.jpg -------------------------------------------------------------------------------- /docs/resources/reports/Badges/badge_shieldsio_branchcoverage_blue.svg: -------------------------------------------------------------------------------- 1 | coveragecoverage50%50% -------------------------------------------------------------------------------- /docs/resources/reports/Badges/badge_shieldsio_branchcoverage_brightgreen.svg: -------------------------------------------------------------------------------- 1 | coveragecoverage50%50% -------------------------------------------------------------------------------- /docs/resources/reports/Badges/badge_shieldsio_branchcoverage_green.svg: -------------------------------------------------------------------------------- 1 | coveragecoverage50%50% -------------------------------------------------------------------------------- /docs/resources/reports/Badges/badge_shieldsio_branchcoverage_lightgrey.svg: -------------------------------------------------------------------------------- 1 | coveragecoverage50%50% -------------------------------------------------------------------------------- /docs/resources/reports/Badges/badge_shieldsio_branchcoverage_orange.svg: -------------------------------------------------------------------------------- 1 | coveragecoverage50%50% -------------------------------------------------------------------------------- /docs/resources/reports/Badges/badge_shieldsio_branchcoverage_red.svg: -------------------------------------------------------------------------------- 1 | coveragecoverage50%50% -------------------------------------------------------------------------------- /docs/resources/reports/Badges/badge_shieldsio_branchcoverage_yellow.svg: -------------------------------------------------------------------------------- 1 | coveragecoverage50%50% -------------------------------------------------------------------------------- /docs/resources/reports/Badges/badge_shieldsio_branchcoverage_yellowgreen.svg: -------------------------------------------------------------------------------- 1 | coveragecoverage50%50% -------------------------------------------------------------------------------- /docs/resources/reports/Badges/badge_shieldsio_fullmethodcoverage_blue.svg: -------------------------------------------------------------------------------- 1 | coveragecoverage37%37% -------------------------------------------------------------------------------- /docs/resources/reports/Badges/badge_shieldsio_fullmethodcoverage_brightgreen.svg: -------------------------------------------------------------------------------- 1 | coveragecoverage37%37% -------------------------------------------------------------------------------- /docs/resources/reports/Badges/badge_shieldsio_fullmethodcoverage_green.svg: -------------------------------------------------------------------------------- 1 | coveragecoverage37%37% -------------------------------------------------------------------------------- /docs/resources/reports/Badges/badge_shieldsio_fullmethodcoverage_lightgrey.svg: -------------------------------------------------------------------------------- 1 | coveragecoverage37%37% -------------------------------------------------------------------------------- /docs/resources/reports/Badges/badge_shieldsio_fullmethodcoverage_orange.svg: -------------------------------------------------------------------------------- 1 | coveragecoverage37%37% -------------------------------------------------------------------------------- /docs/resources/reports/Badges/badge_shieldsio_fullmethodcoverage_red.svg: -------------------------------------------------------------------------------- 1 | coveragecoverage37%37% -------------------------------------------------------------------------------- /docs/resources/reports/Badges/badge_shieldsio_fullmethodcoverage_yellow.svg: -------------------------------------------------------------------------------- 1 | coveragecoverage37%37% -------------------------------------------------------------------------------- /docs/resources/reports/Badges/badge_shieldsio_fullmethodcoverage_yellowgreen.svg: -------------------------------------------------------------------------------- 1 | coveragecoverage37%37% -------------------------------------------------------------------------------- /docs/resources/reports/Badges/badge_shieldsio_linecoverage_blue.svg: -------------------------------------------------------------------------------- 1 | coveragecoverage69%69% -------------------------------------------------------------------------------- /docs/resources/reports/Badges/badge_shieldsio_linecoverage_brightgreen.svg: -------------------------------------------------------------------------------- 1 | coveragecoverage69%69% -------------------------------------------------------------------------------- /docs/resources/reports/Badges/badge_shieldsio_linecoverage_green.svg: -------------------------------------------------------------------------------- 1 | coveragecoverage69%69% -------------------------------------------------------------------------------- /docs/resources/reports/Badges/badge_shieldsio_linecoverage_lightgrey.svg: -------------------------------------------------------------------------------- 1 | coveragecoverage69%69% -------------------------------------------------------------------------------- /docs/resources/reports/Badges/badge_shieldsio_linecoverage_orange.svg: -------------------------------------------------------------------------------- 1 | coveragecoverage69%69% -------------------------------------------------------------------------------- /docs/resources/reports/Badges/badge_shieldsio_linecoverage_red.svg: -------------------------------------------------------------------------------- 1 | coveragecoverage69%69% -------------------------------------------------------------------------------- /docs/resources/reports/Badges/badge_shieldsio_linecoverage_yellow.svg: -------------------------------------------------------------------------------- 1 | coveragecoverage69%69% -------------------------------------------------------------------------------- /docs/resources/reports/Badges/badge_shieldsio_linecoverage_yellowgreen.svg: -------------------------------------------------------------------------------- 1 | coveragecoverage69%69% -------------------------------------------------------------------------------- /docs/resources/reports/Badges/badge_shieldsio_methodcoverage_blue.svg: -------------------------------------------------------------------------------- 1 | coveragecoverage66%66% -------------------------------------------------------------------------------- /docs/resources/reports/Badges/badge_shieldsio_methodcoverage_brightgreen.svg: -------------------------------------------------------------------------------- 1 | coveragecoverage66%66% -------------------------------------------------------------------------------- /docs/resources/reports/Badges/badge_shieldsio_methodcoverage_green.svg: -------------------------------------------------------------------------------- 1 | coveragecoverage66%66% -------------------------------------------------------------------------------- /docs/resources/reports/Badges/badge_shieldsio_methodcoverage_lightgrey.svg: -------------------------------------------------------------------------------- 1 | coveragecoverage66%66% -------------------------------------------------------------------------------- /docs/resources/reports/Badges/badge_shieldsio_methodcoverage_orange.svg: -------------------------------------------------------------------------------- 1 | coveragecoverage66%66% -------------------------------------------------------------------------------- /docs/resources/reports/Badges/badge_shieldsio_methodcoverage_red.svg: -------------------------------------------------------------------------------- 1 | coveragecoverage66%66% -------------------------------------------------------------------------------- /docs/resources/reports/Badges/badge_shieldsio_methodcoverage_yellow.svg: -------------------------------------------------------------------------------- 1 | coveragecoverage66%66% -------------------------------------------------------------------------------- /docs/resources/reports/Badges/badge_shieldsio_methodcoverage_yellowgreen.svg: -------------------------------------------------------------------------------- 1 | coveragecoverage66%66% -------------------------------------------------------------------------------- /docs/resources/reports/CsvSummary/Summary.csv: -------------------------------------------------------------------------------- 1 | Summary 2 | Generated on:;09.02.2025 - 18:57:00 3 | Parser:;OpenCover 4 | Assemblies:;1 5 | Classes:;4 6 | Files:;5 7 | Line coverage:;69.4% 8 | Covered lines:;75 9 | Uncovered lines:;33 10 | Coverable lines:;108 11 | Total lines:;260 12 | 13 | Sample;69.4% 14 | 15 | Sample.PartialClass;54.5% 16 | Test.Program;100% 17 | Test.TestClass;72.7% 18 | Test.TestClass2;63.1% 19 | -------------------------------------------------------------------------------- /docs/resources/reports/Html/icon_cube.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /docs/resources/reports/Html/icon_cube_dark.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/resources/reports/Html/icon_down-dir_active.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /docs/resources/reports/Html/icon_down-dir_active_dark.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/resources/reports/Html/icon_fork.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /docs/resources/reports/Html/icon_fork_dark.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/resources/reports/Html/icon_info-circled.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /docs/resources/reports/Html/icon_info-circled_dark.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /docs/resources/reports/Html/icon_minus.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /docs/resources/reports/Html/icon_minus_dark.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/resources/reports/Html/icon_plus.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /docs/resources/reports/Html/icon_plus_dark.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/resources/reports/Html/icon_search-minus.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /docs/resources/reports/Html/icon_search-minus_dark.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/resources/reports/Html/icon_search-plus.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /docs/resources/reports/Html/icon_search-plus_dark.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/resources/reports/Html/icon_sponsor.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /docs/resources/reports/Html/icon_star.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /docs/resources/reports/Html/icon_star_dark.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /docs/resources/reports/Html/icon_up-dir.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /docs/resources/reports/Html/icon_up-dir_active.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /docs/resources/reports/Html/icon_up-down-dir.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /docs/resources/reports/Html/icon_up-down-dir_dark.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /docs/resources/reports/Html/icon_wrench.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /docs/resources/reports/Html/icon_wrench_dark.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/resources/reports/Html_BlueRed/icon_cube.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /docs/resources/reports/Html_BlueRed/icon_cube_dark.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/resources/reports/Html_BlueRed/icon_down-dir_active.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /docs/resources/reports/Html_BlueRed/icon_down-dir_active_dark.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/resources/reports/Html_BlueRed/icon_fork.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /docs/resources/reports/Html_BlueRed/icon_fork_dark.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/resources/reports/Html_BlueRed/icon_info-circled.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /docs/resources/reports/Html_BlueRed/icon_info-circled_dark.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /docs/resources/reports/Html_BlueRed/icon_minus.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /docs/resources/reports/Html_BlueRed/icon_minus_dark.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/resources/reports/Html_BlueRed/icon_plus.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /docs/resources/reports/Html_BlueRed/icon_plus_dark.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/resources/reports/Html_BlueRed/icon_search-minus.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /docs/resources/reports/Html_BlueRed/icon_search-minus_dark.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/resources/reports/Html_BlueRed/icon_search-plus.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /docs/resources/reports/Html_BlueRed/icon_search-plus_dark.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/resources/reports/Html_BlueRed/icon_sponsor.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /docs/resources/reports/Html_BlueRed/icon_star.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /docs/resources/reports/Html_BlueRed/icon_star_dark.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /docs/resources/reports/Html_BlueRed/icon_up-dir.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /docs/resources/reports/Html_BlueRed/icon_up-dir_active.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /docs/resources/reports/Html_BlueRed/icon_up-down-dir.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /docs/resources/reports/Html_BlueRed/icon_up-down-dir_dark.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /docs/resources/reports/Html_BlueRed/icon_wrench.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /docs/resources/reports/Html_BlueRed/icon_wrench_dark.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/resources/reports/Html_Dark/icon_cube.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /docs/resources/reports/Html_Dark/icon_cube_dark.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/resources/reports/Html_Dark/icon_down-dir_active.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /docs/resources/reports/Html_Dark/icon_down-dir_active_dark.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/resources/reports/Html_Dark/icon_fork.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /docs/resources/reports/Html_Dark/icon_fork_dark.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/resources/reports/Html_Dark/icon_info-circled.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /docs/resources/reports/Html_Dark/icon_info-circled_dark.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /docs/resources/reports/Html_Dark/icon_minus.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /docs/resources/reports/Html_Dark/icon_minus_dark.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/resources/reports/Html_Dark/icon_plus.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /docs/resources/reports/Html_Dark/icon_plus_dark.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/resources/reports/Html_Dark/icon_search-minus.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /docs/resources/reports/Html_Dark/icon_search-minus_dark.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/resources/reports/Html_Dark/icon_search-plus.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /docs/resources/reports/Html_Dark/icon_search-plus_dark.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/resources/reports/Html_Dark/icon_sponsor.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /docs/resources/reports/Html_Dark/icon_star.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /docs/resources/reports/Html_Dark/icon_star_dark.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /docs/resources/reports/Html_Dark/icon_up-dir.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /docs/resources/reports/Html_Dark/icon_up-dir_active.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /docs/resources/reports/Html_Dark/icon_up-down-dir.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /docs/resources/reports/Html_Dark/icon_up-down-dir_dark.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /docs/resources/reports/Html_Dark/icon_wrench.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /docs/resources/reports/Html_Dark/icon_wrench_dark.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/resources/reports/Html_Light/icon_cube.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /docs/resources/reports/Html_Light/icon_down-dir_active.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /docs/resources/reports/Html_Light/icon_fork.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /docs/resources/reports/Html_Light/icon_info-circled.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /docs/resources/reports/Html_Light/icon_minus.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /docs/resources/reports/Html_Light/icon_plus.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /docs/resources/reports/Html_Light/icon_search-minus.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /docs/resources/reports/Html_Light/icon_search-plus.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /docs/resources/reports/Html_Light/icon_sponsor.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /docs/resources/reports/Html_Light/icon_star.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /docs/resources/reports/Html_Light/icon_up-dir.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /docs/resources/reports/Html_Light/icon_up-dir_active.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /docs/resources/reports/Html_Light/icon_up-down-dir.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /docs/resources/reports/Html_Light/icon_wrench.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /docs/resources/reports/MarkdownAssembliesSummary/Summary.md: -------------------------------------------------------------------------------- 1 | # Summary 2 | 3 | ![Line coverage](https://img.shields.io/badge/lines-69.4%25-C10909) ![Branch coverage](https://img.shields.io/badge/branches-50%25-C10909) ![Method coverage](https://img.shields.io/badge/methods-66.6%25-C10909) ![Full method coverage](https://img.shields.io/badge/methods-37.5%25-C10909) 4 | 5 | |**Assembly**|**Line coverage**|**Branch coverage**|**Method coverage**|**Full method coverage**| 6 | |:---|---:|---:|---:|---:| 7 | |**Sample**|**69.4%**|**50%**|**66.6%**|**37.5%**| 8 | -------------------------------------------------------------------------------- /docs/resources/reports/MarkdownDeltaSummary/DeltaSummary.md: -------------------------------------------------------------------------------- 1 | # Delta Summary 2 | ||||| 3 | |:---|---:|---:|---:| 4 | | Generated on: | 09.02.2025 - 18:57 | | | 5 | | Description | **Previous** | **Current** | **Delta** | 6 | | Coverage date: | 09.02.2022 - 20:50 | 09.02.2025 - 18:57 | | 7 | | **Line coverage:** | 58.4% | 69.4% | 11.0% | 8 | | Covered lines: | 73 | 75 | 2 | 9 | | Coverable lines: | 125 | 108 | -17 | 10 | | Total lines: | 260 | 260 | 0 | 11 | | **Branch coverage:** | 45% | 50% | 5% | 12 | | Covered branches: | 27 | 4 | -23 | 13 | | Total branches: | 60 | 8 | -52 | 14 | | **Method coverage:** | 66.6% | 66.6% | 0.0% | 15 | | **Full method coverage:** | 37.5% | 37.5% | 0.0% | 16 | | Covered methods: | 16 | 16 | 0 | 17 | | Fully covered methods: | 9 | 9 | 0 | 18 | | Total methods: | 24 | 24 | 0 | 19 | -------------------------------------------------------------------------------- /docs/resources/reports/TextSummary/Summary.txt: -------------------------------------------------------------------------------- 1 | Summary 2 | Generated on: 09.02.2025 - 18:56:59 3 | Parser: OpenCover 4 | Assemblies: 1 5 | Classes: 4 6 | Files: 5 7 | Line coverage: 69.4% 8 | Covered lines: 75 9 | Uncovered lines: 33 10 | Coverable lines: 108 11 | Total lines: 260 12 | Branch coverage: 50% (4 of 8) 13 | Covered branches: 4 14 | Total branches: 8 15 | Method coverage: 66.6% (16 of 24) 16 | Full method coverage: 37.5% (9 of 24) 17 | Covered methods: 16 18 | Fully covered methods: 9 19 | Total methods: 24 20 | 21 | Sample 69.4% 22 | Sample.PartialClass 54.5% 23 | Test.Program 100% 24 | Test.TestClass 72.7% 25 | Test.TestClass2 63.1% 26 | -------------------------------------------------------------------------------- /docs/resources/screenshot1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danielpalme/ReportGenerator/c68f7ccc8a96e4ba711598bedc7d8decbdb2506d/docs/resources/screenshot1.png -------------------------------------------------------------------------------- /docs/resources/screenshot1.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danielpalme/ReportGenerator/c68f7ccc8a96e4ba711598bedc7d8decbdb2506d/docs/resources/screenshot1.webp -------------------------------------------------------------------------------- /docs/resources/screenshot1@2x.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danielpalme/ReportGenerator/c68f7ccc8a96e4ba711598bedc7d8decbdb2506d/docs/resources/screenshot1@2x.webp -------------------------------------------------------------------------------- /docs/resources/screenshot1_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danielpalme/ReportGenerator/c68f7ccc8a96e4ba711598bedc7d8decbdb2506d/docs/resources/screenshot1_dark.png -------------------------------------------------------------------------------- /docs/resources/screenshot1_dark.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danielpalme/ReportGenerator/c68f7ccc8a96e4ba711598bedc7d8decbdb2506d/docs/resources/screenshot1_dark.webp -------------------------------------------------------------------------------- /docs/resources/screenshot1_dark@2x.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danielpalme/ReportGenerator/c68f7ccc8a96e4ba711598bedc7d8decbdb2506d/docs/resources/screenshot1_dark@2x.webp -------------------------------------------------------------------------------- /docs/resources/screenshot2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danielpalme/ReportGenerator/c68f7ccc8a96e4ba711598bedc7d8decbdb2506d/docs/resources/screenshot2.png -------------------------------------------------------------------------------- /docs/resources/screenshot2.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danielpalme/ReportGenerator/c68f7ccc8a96e4ba711598bedc7d8decbdb2506d/docs/resources/screenshot2.webp -------------------------------------------------------------------------------- /docs/resources/screenshot2@2x.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danielpalme/ReportGenerator/c68f7ccc8a96e4ba711598bedc7d8decbdb2506d/docs/resources/screenshot2@2x.webp -------------------------------------------------------------------------------- /docs/resources/screenshot2_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danielpalme/ReportGenerator/c68f7ccc8a96e4ba711598bedc7d8decbdb2506d/docs/resources/screenshot2_dark.png -------------------------------------------------------------------------------- /docs/resources/screenshot2_dark.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danielpalme/ReportGenerator/c68f7ccc8a96e4ba711598bedc7d8decbdb2506d/docs/resources/screenshot2_dark.webp -------------------------------------------------------------------------------- /docs/resources/screenshot2_dark@2x.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danielpalme/ReportGenerator/c68f7ccc8a96e4ba711598bedc7d8decbdb2506d/docs/resources/screenshot2_dark@2x.webp -------------------------------------------------------------------------------- /docs/resources/twitter_light.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danielpalme/ReportGenerator/c68f7ccc8a96e4ba711598bedc7d8decbdb2506d/docs/resources/twitter_light.webp -------------------------------------------------------------------------------- /docs/robots.txt: -------------------------------------------------------------------------------- 1 | Sitemap: https://reportgenerator.io/sitemap.xml -------------------------------------------------------------------------------- /global.json: -------------------------------------------------------------------------------- 1 | { 2 | "sdk": { 3 | "version": "9.0.300", 4 | "rollForward": "latestMajor" 5 | } 6 | } -------------------------------------------------------------------------------- /src/.gitignore: -------------------------------------------------------------------------------- 1 | /.vs 2 | /AzureDevopsTask*/ReportGenerator/tools 3 | /AzureDevopsTask*/ReportGenerator/reportgenerator.js 4 | /AzureDevopsTask*/*.vsix 5 | /TestResults 6 | /Testprojects/CoverageTools 7 | /Testprojects/TestResults 8 | /target 9 | /resources 10 | /publish.bat 11 | *.suo 12 | *.user 13 | *.Cache 14 | *.binlog 15 | bin 16 | obj 17 | .DS_Store 18 | .AssemblyAttributes 19 | .netconfig 20 | node_modules 21 | /_ReSharper.Caches -------------------------------------------------------------------------------- /src/AngularComponents/.gitignore: -------------------------------------------------------------------------------- 1 | # See http://help.github.com/ignore-files/ for more about ignoring files. 2 | 3 | # compiled output 4 | /dist 5 | /tmp 6 | /out-tsc 7 | # Only exists if Bazel was run 8 | /bazel-out 9 | 10 | # dependencies 11 | /node_modules 12 | 13 | # profiling files 14 | chrome-profiler-events*.json 15 | 16 | # IDEs and editors 17 | /.idea 18 | .project 19 | .classpath 20 | .c9/ 21 | *.launch 22 | .settings/ 23 | *.sublime-workspace 24 | 25 | # IDE - VSCode 26 | .vscode/* 27 | !.vscode/settings.json 28 | !.vscode/tasks.json 29 | !.vscode/launch.json 30 | !.vscode/extensions.json 31 | .history/* 32 | 33 | # misc 34 | /.angular/cache 35 | /.sass-cache 36 | /connect.lock 37 | /coverage 38 | /libpeerconnection.log 39 | npm-debug.log 40 | yarn-error.log 41 | testem.log 42 | /typings 43 | 44 | # System Files 45 | .DS_Store 46 | Thumbs.db 47 | 48 | /src/assets/sampledata -------------------------------------------------------------------------------- /src/AngularComponents/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "coverage-app", 3 | "version": "0.0.0", 4 | "scripts": { 5 | "ng": "ng", 6 | "start": "ng serve", 7 | "build": "ng build", 8 | "watch": "ng build --watch --configuration development" 9 | }, 10 | "private": true, 11 | "dependencies": { 12 | "@angular-slider/ngx-slider": "^19.0.0", 13 | "@angular/animations": "^19.2.11", 14 | "@angular/common": "^19.2.11", 15 | "@angular/compiler": "^19.2.11", 16 | "@angular/core": "^19.2.11", 17 | "@angular/forms": "^19.2.11", 18 | "@angular/platform-browser": "^19.2.11", 19 | "@angular/platform-browser-dynamic": "^19.2.11", 20 | "@angular/router": "^19.2.11", 21 | "rxjs": "~7.8.1", 22 | "tslib": "^2.6.3", 23 | "zone.js": "~0.15.0" 24 | }, 25 | "devDependencies": { 26 | "@angular-devkit/build-angular": "^19.2.13", 27 | "@angular/cli": "^19.2.13", 28 | "@angular/compiler-cli": "^19.2.11", 29 | "@types/node": "^12.11.1", 30 | "typescript": "~5.5.3" 31 | } 32 | } -------------------------------------------------------------------------------- /src/AngularComponents/src/app/components/coverageinfo/data/assembly.class.ts: -------------------------------------------------------------------------------- 1 | import { Class } from "./class.class"; 2 | 3 | export class Assembly { 4 | name: string = ""; 5 | classes: Class[] = []; 6 | } 7 | -------------------------------------------------------------------------------- /src/AngularComponents/src/app/components/coverageinfo/data/coverageinfo-settings.class.ts: -------------------------------------------------------------------------------- 1 | import { Metric } from "./metric.class"; 2 | 3 | export class CoverageInfoSettings { 4 | showLineCoverage: boolean = true; 5 | showBranchCoverage: boolean = true; 6 | showMethodCoverage: boolean = true; 7 | showFullMethodCoverage: boolean = true; 8 | visibleMetrics: Metric[] = []; 9 | 10 | groupingMaximum: number = 0; 11 | grouping: number = 0; 12 | historyComparisionDate: string = ""; 13 | historyComparisionType: string = ""; 14 | 15 | filter: string = ""; 16 | lineCoverageMin: number = 0; 17 | lineCoverageMax: number = 100; 18 | branchCoverageMin: number = 0; 19 | branchCoverageMax: number = 100; 20 | methodCoverageMin: number = 0; 21 | methodCoverageMax: number = 100; 22 | methodFullCoverageMin: number = 0; 23 | methodFullCoverageMax: number = 100; 24 | 25 | sortBy: string = "name"; 26 | sortOrder: string = "asc"; 27 | 28 | collapseStates: boolean[] = []; 29 | } 30 | -------------------------------------------------------------------------------- /src/AngularComponents/src/app/components/coverageinfo/data/metric.class.ts: -------------------------------------------------------------------------------- 1 | export class Metric { 2 | name: string = ""; 3 | abbreviation: string = ""; 4 | explanationUrl: string = ""; 5 | } 6 | -------------------------------------------------------------------------------- /src/AngularComponents/src/app/components/coverageinfo/pro-button.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, Input } from "@angular/core"; 2 | 3 | @Component({ 4 | selector: "pro-button", 5 | template: ` PRO`, 6 | standalone: false 7 | }) 8 | export class ProButton { 9 | @Input() translations: any = { }; 10 | } -------------------------------------------------------------------------------- /src/AngularComponents/src/app/components/coverageinfo/viewmodels/helper.class.ts: -------------------------------------------------------------------------------- 1 | export class Helper { 2 | static maximumDecimalPlacesForCoverageQuotas: number; 3 | 4 | static roundNumber(number: number): number { 5 | return Math.floor(number * Math.pow(10, Helper.maximumDecimalPlacesForCoverageQuotas)) / Math.pow(10, Helper.maximumDecimalPlacesForCoverageQuotas); 6 | } 7 | 8 | static getNthOrLastIndexOf(text: string, substring: string, n: number): number { 9 | let times: number = 0; 10 | let index: number = -1; 11 | let currentIndex: number = -1; 12 | 13 | while (times < n) { 14 | currentIndex = text.indexOf(substring, index + 1); 15 | if (currentIndex === -1) { 16 | break; 17 | } else { 18 | index = currentIndex; 19 | } 20 | 21 | times++; 22 | } 23 | 24 | return index; 25 | } 26 | } -------------------------------------------------------------------------------- /src/AngularComponents/src/app/components/globalhistorystate.ts: -------------------------------------------------------------------------------- 1 | import { CoverageInfoSettings } from "./coverageinfo/data/coverageinfo-settings.class"; 2 | import { RiskHotspotsSettings } from "./riskhotspots/data/riskhotspots-settings.class"; 3 | 4 | export class GlobalHistoryState { 5 | riskHotspotsSettings: RiskHotspotsSettings|null = null; 6 | coverageInfoSettings: CoverageInfoSettings|null = null; 7 | } 8 | -------------------------------------------------------------------------------- /src/AngularComponents/src/app/components/riskhotspots/data/metric.class.ts: -------------------------------------------------------------------------------- 1 | export class Metric { 2 | value: number = 0; 3 | exceeded: boolean = false; 4 | } -------------------------------------------------------------------------------- /src/AngularComponents/src/app/components/riskhotspots/data/riskhotspot-metric.class.ts: -------------------------------------------------------------------------------- 1 | export class RiskHotspotMetric { 2 | name: string = ""; 3 | explanationUrl: string = ""; 4 | } -------------------------------------------------------------------------------- /src/AngularComponents/src/app/components/riskhotspots/data/riskhotspot.class.ts: -------------------------------------------------------------------------------- 1 | import { Metric } from "./metric.class"; 2 | 3 | export class RiskHotspot { 4 | assembly: string = ""; 5 | class: string = ""; 6 | reportPath: string = ""; 7 | methodName: string = ""; 8 | methodShortName: string = ""; 9 | fileIndex: number = 0; 10 | line: number = 0; 11 | metrics: Metric[] = []; 12 | } -------------------------------------------------------------------------------- /src/AngularComponents/src/app/components/riskhotspots/data/riskhotspots-settings.class.ts: -------------------------------------------------------------------------------- 1 | export class RiskHotspotsSettings { 2 | assembly: string = ""; 3 | numberOfRiskHotspots: number = 10; 4 | filter: string = ""; 5 | 6 | sortBy: string = ""; 7 | sortOrder: string = "asc"; 8 | } 9 | -------------------------------------------------------------------------------- /src/AngularComponents/src/app/infrastructure/windowref.service.ts: -------------------------------------------------------------------------------- 1 | import { Injectable } from '@angular/core'; 2 | 3 | function getWindow (): any { 4 | return window; 5 | } 6 | 7 | @Injectable() 8 | export class WindowRefService { 9 | get nativeWindow (): any { 10 | return getWindow(); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/AngularComponents/src/assets/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danielpalme/ReportGenerator/c68f7ccc8a96e4ba711598bedc7d8decbdb2506d/src/AngularComponents/src/assets/.gitkeep -------------------------------------------------------------------------------- /src/AngularComponents/src/assets/icon_down-dir_active.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /src/AngularComponents/src/assets/icon_info-circled.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /src/AngularComponents/src/assets/icon_minus.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /src/AngularComponents/src/assets/icon_plus.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /src/AngularComponents/src/assets/icon_up-dir.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /src/AngularComponents/src/assets/icon_up-dir_active.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /src/AngularComponents/src/class.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | CoverageApp 7 | 8 | 9 | 10 | 11 | 12 |
13 |
14 |

Class details

15 |

...

16 |
17 |
18 | 19 | 20 | -------------------------------------------------------------------------------- /src/AngularComponents/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /src/AngularComponents/src/environments/environment.ts: -------------------------------------------------------------------------------- 1 | // This file can be replaced during build by using the `fileReplacements` array. 2 | // `ng build` replaces `environment.ts` with `environment.prod.ts`. 3 | // The list of file replacements can be found in `angular.json`. 4 | 5 | export const environment = { 6 | production: false 7 | }; 8 | 9 | /* 10 | * For easier debugging in development mode, you can import the following file 11 | * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`. 12 | * 13 | * This import should be commented out in production mode because it will have a negative impact 14 | * on performance if an error is thrown. 15 | */ 16 | // import 'zone.js/plugins/zone-error'; // Included with Angular CLI. 17 | -------------------------------------------------------------------------------- /src/AngularComponents/src/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danielpalme/ReportGenerator/c68f7ccc8a96e4ba711598bedc7d8decbdb2506d/src/AngularComponents/src/favicon.ico -------------------------------------------------------------------------------- /src/AngularComponents/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | CoverageApp 7 | 8 | 9 | 10 | 11 | 12 |
13 |
14 |

Risk hotspots

15 | 16 | 17 |

Coverage

18 | 19 |
20 |
21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /src/AngularComponents/src/main.ts: -------------------------------------------------------------------------------- 1 | import { enableProdMode } from '@angular/core'; 2 | import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; 3 | 4 | import { AppModule } from './app/app.module'; 5 | import { environment } from './environments/environment'; 6 | 7 | if (environment.production) { 8 | enableProdMode(); 9 | } 10 | 11 | platformBrowserDynamic().bootstrapModule(AppModule) 12 | .catch(err => console.error(err)); 13 | -------------------------------------------------------------------------------- /src/AngularComponents/src/styles.css: -------------------------------------------------------------------------------- 1 | /* You can add global styles to this file, and also import other style files */ 2 | -------------------------------------------------------------------------------- /src/AngularComponents/tsconfig.app.json: -------------------------------------------------------------------------------- 1 | /* To learn more about this file see: https://angular.io/config/tsconfig. */ 2 | { 3 | "extends": "./tsconfig.json", 4 | "compilerOptions": { 5 | "outDir": "./out-tsc/app", 6 | "types": [] 7 | }, 8 | "files": [ 9 | "src/main.ts", 10 | "src/polyfills.ts" 11 | ], 12 | "include": [ 13 | "src/**/*.d.ts" 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /src/AngularComponents/tsconfig.json: -------------------------------------------------------------------------------- 1 | /* To learn more about this file see: https://angular.io/config/tsconfig. */ 2 | { 3 | "compileOnSave": false, 4 | "compilerOptions": { 5 | "baseUrl": "./", 6 | "outDir": "./dist/out-tsc", 7 | "forceConsistentCasingInFileNames": true, 8 | "strict": true, 9 | "noImplicitOverride": true, 10 | "noPropertyAccessFromIndexSignature": true, 11 | "noImplicitReturns": true, 12 | "noFallthroughCasesInSwitch": true, 13 | "sourceMap": true, 14 | "declaration": false, 15 | "downlevelIteration": true, 16 | "experimentalDecorators": true, 17 | "moduleResolution": "node", 18 | "importHelpers": true, 19 | "target": "ES2022", 20 | "module": "es2020", 21 | "lib": [ 22 | "es2020", 23 | "dom" 24 | ], 25 | "useDefineForClassFields": false 26 | }, 27 | "angularCompilerOptions": { 28 | "enableI18nLegacyMessageIdFormat": false, 29 | "strictInjectionParameters": true, 30 | "strictInputAccessModifiers": true, 31 | "strictTemplates": true 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/AzureDevopsTask/ReportGenerator/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danielpalme/ReportGenerator/c68f7ccc8a96e4ba711598bedc7d8decbdb2506d/src/AzureDevopsTask/ReportGenerator/icon.png -------------------------------------------------------------------------------- /src/AzureDevopsTask/ReportGenerator/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "reportgenerator", 3 | "version": "1.0.0", 4 | "description": "ReportGenerator converts coverage reports generated by coverlet, OpenCover, dotCover, Visual Studio, NCover, Cobertura, JaCoCo, Clover, gcov, or lcov into human readable reports in various formats.", 5 | "main": "reportgenerator.js", 6 | "repository": { 7 | "type": "git", 8 | "url": "git+https://github.com/danielpalme/ReportGenerator.git" 9 | }, 10 | "author": "Daniel Palme", 11 | "license": "Apache-2.0", 12 | "bugs": { 13 | "url": "https://github.com/danielpalme/ReportGenerator/issues" 14 | }, 15 | "homepage": "https://github.com/danielpalme/ReportGenerator", 16 | "dependencies": { 17 | "azure-pipelines-task-lib": "^4.17.3" 18 | }, 19 | "devDependencies": { 20 | "@types/node": "^22.9.0", 21 | "@types/q": "^1.5.8", 22 | "typescript": "^5.6.3" 23 | }, 24 | "scripts": { 25 | "tsc": "tsc" 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/AzureDevopsTask/ReportGenerator/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ES6", 4 | "module": "commonjs" 5 | } 6 | } -------------------------------------------------------------------------------- /src/AzureDevopsTask/build.bat: -------------------------------------------------------------------------------- 1 | cd ReportGenerator 2 | npm run tsc 3 | cd .. 4 | tfx extension create --manifest-globs vss-extension.json -------------------------------------------------------------------------------- /src/AzureDevopsTask/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danielpalme/ReportGenerator/c68f7ccc8a96e4ba711598bedc7d8decbdb2506d/src/AzureDevopsTask/icon.png -------------------------------------------------------------------------------- /src/AzureDevopsTask/img/screenshot1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danielpalme/ReportGenerator/c68f7ccc8a96e4ba711598bedc7d8decbdb2506d/src/AzureDevopsTask/img/screenshot1.png -------------------------------------------------------------------------------- /src/AzureDevopsTask/img/screenshot2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danielpalme/ReportGenerator/c68f7ccc8a96e4ba711598bedc7d8decbdb2506d/src/AzureDevopsTask/img/screenshot2.png -------------------------------------------------------------------------------- /src/AzureDevopsTask/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "devDependencies": { 3 | "tfx-cli": "^0.17.0" 4 | }, 5 | "scripts": { 6 | "tfx": "tfx" 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/AzureDevopsTaskTest/ReportGenerator/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danielpalme/ReportGenerator/c68f7ccc8a96e4ba711598bedc7d8decbdb2506d/src/AzureDevopsTaskTest/ReportGenerator/icon.png -------------------------------------------------------------------------------- /src/AzureDevopsTaskTest/ReportGenerator/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "reportgeneratortest", 3 | "version": "1.0.0", 4 | "description": "ReportGenerator converts coverage reports generated by coverlet, OpenCover, dotCover, Visual Studio, NCover, Cobertura, JaCoCo, Clover, gcov, or lcov into human readable reports in various formats.", 5 | "main": "reportgenerator.js", 6 | "repository": { 7 | "type": "git", 8 | "url": "git+https://github.com/danielpalme/ReportGenerator.git" 9 | }, 10 | "author": "Daniel Palme", 11 | "license": "Apache-2.0", 12 | "bugs": { 13 | "url": "https://github.com/danielpalme/ReportGenerator/issues" 14 | }, 15 | "homepage": "https://github.com/danielpalme/ReportGenerator", 16 | "dependencies": { 17 | "azure-pipelines-task-lib": "^4.17.3" 18 | }, 19 | "devDependencies": { 20 | "@types/node": "^22.9.0", 21 | "@types/q": "^1.5.8", 22 | "typescript": "^5.6.3" 23 | }, 24 | "scripts": { 25 | "tsc": "tsc" 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/AzureDevopsTaskTest/ReportGenerator/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ES6", 4 | "module": "commonjs" 5 | } 6 | } -------------------------------------------------------------------------------- /src/AzureDevopsTaskTest/build.bat: -------------------------------------------------------------------------------- 1 | cd ReportGenerator 2 | npm run tsc 3 | cd .. 4 | tfx extension create --manifest-globs vss-extension.json -------------------------------------------------------------------------------- /src/AzureDevopsTaskTest/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danielpalme/ReportGenerator/c68f7ccc8a96e4ba711598bedc7d8decbdb2506d/src/AzureDevopsTaskTest/icon.png -------------------------------------------------------------------------------- /src/AzureDevopsTaskTest/img/screenshot1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danielpalme/ReportGenerator/c68f7ccc8a96e4ba711598bedc7d8decbdb2506d/src/AzureDevopsTaskTest/img/screenshot1.png -------------------------------------------------------------------------------- /src/AzureDevopsTaskTest/img/screenshot2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danielpalme/ReportGenerator/c68f7ccc8a96e4ba711598bedc7d8decbdb2506d/src/AzureDevopsTaskTest/img/screenshot2.png -------------------------------------------------------------------------------- /src/AzureDevopsTaskTest/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "devDependencies": { 3 | "tfx-cli": "^0.17.0" 4 | }, 5 | "scripts": { 6 | "tfx": "tfx" 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/Deployment/chocolatey/VERIFICATION.txt: -------------------------------------------------------------------------------- 1 | VERIFICATION 2 | Verification is intended to assist the Chocolatey moderators and community 3 | in verifying that this package's contents are trustworthy. 4 | 5 | Any binaries will be identical to other package types published by the project, 6 | in particular the ReportGenerator NuGet package. -------------------------------------------------------------------------------- /src/Deployment/logo_64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danielpalme/ReportGenerator/c68f7ccc8a96e4ba711598bedc7d8decbdb2506d/src/Deployment/logo_64.png -------------------------------------------------------------------------------- /src/Deployment/logo_global_64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danielpalme/ReportGenerator/c68f7ccc8a96e4ba711598bedc7d8decbdb2506d/src/Deployment/logo_global_64.png -------------------------------------------------------------------------------- /src/Deployment/logo_plugin_64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danielpalme/ReportGenerator/c68f7ccc8a96e4ba711598bedc7d8decbdb2506d/src/Deployment/logo_plugin_64.png -------------------------------------------------------------------------------- /src/Deployment/nuget/DotnetToolSettings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/Deployment/nuget/ReportGenerator.props: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | $(MSBuildThisFileDirectory)..\..\tools\net8.0\ReportGenerator.MSBuild.dll 5 | $(MSBuildThisFileDirectory)..\..\tools\net47\ReportGenerator.MSBuild.dll 6 | 7 | 8 | -------------------------------------------------------------------------------- /src/ReportGenerator.Console.NetCore/Program.cs: -------------------------------------------------------------------------------- 1 | namespace Palmmedia.ReportGenerator.Console.NetCore 2 | { 3 | /// 4 | /// Command line access to the ReportBuilder. 5 | /// 6 | internal class Program 7 | { 8 | /// 9 | /// The main method. 10 | /// 11 | /// The command line arguments. 12 | /// Return code indicating success/failure. 13 | internal static int Main(string[] args) 14 | { 15 | return Core.Program.Main(args); 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/ReportGenerator.Console.NetCore/ProgramIcon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danielpalme/ReportGenerator/c68f7ccc8a96e4ba711598bedc7d8decbdb2506d/src/ReportGenerator.Console.NetCore/ProgramIcon.ico -------------------------------------------------------------------------------- /src/ReportGenerator.Console.NetCore/Properties/launchSettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "profiles": { 3 | "ReportGenerator.Console.NetCore": { 4 | "commandName": "Project", 5 | "commandLineArgs": "\"-reports:..\\..\\..\\..\\..\\src\\Testprojects\\CSharp\\Reports\\Cobertura_coverlet.xml\" \"-targetdir:C:\\Users\\Daniel Palme\\Desktop\\coverage2\" -reporttypes:Html; -filefilters:-*Abstract*.cs" 6 | } 7 | } 8 | } -------------------------------------------------------------------------------- /src/ReportGenerator.Console.NetCore/runtimeconfig.template.json: -------------------------------------------------------------------------------- 1 | { 2 | "rollForwardOnNoCandidateFx": 2 3 | } 4 | -------------------------------------------------------------------------------- /src/ReportGenerator.Console/Program.cs: -------------------------------------------------------------------------------- 1 | namespace Palmmedia.ReportGenerator 2 | { 3 | /// 4 | /// Command line access to the ReportBuilder. 5 | /// 6 | internal class Program 7 | { 8 | /// 9 | /// The main method. 10 | /// 11 | /// The command line arguments. 12 | /// Return code indicating success/failure. 13 | internal static int Main(string[] args) 14 | { 15 | return Core.Program.Main(args); 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/ReportGenerator.Console/ProgramIcon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danielpalme/ReportGenerator/c68f7ccc8a96e4ba711598bedc7d8decbdb2506d/src/ReportGenerator.Console/ProgramIcon.ico -------------------------------------------------------------------------------- /src/ReportGenerator.Console/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Runtime.InteropServices; 2 | 3 | // Setting ComVisible to false makes the types in this assembly not visible 4 | // to COM components. If you need to access a type in this assembly from 5 | // COM, set the ComVisible attribute to true on that type. 6 | [assembly: ComVisible(false)] 7 | 8 | // The following GUID is for the ID of the typelib if this project is exposed to COM 9 | [assembly: Guid("19a59768-9410-440d-a857-a1b5d44787b8")] -------------------------------------------------------------------------------- /src/ReportGenerator.Console/app.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /src/ReportGenerator.Core.Test/Common/Encodings/ansii.txt: -------------------------------------------------------------------------------- 1 | Test -------------------------------------------------------------------------------- /src/ReportGenerator.Core.Test/Common/Encodings/ascii.txt: -------------------------------------------------------------------------------- 1 | premi?re is first 2 | premie?re is slightly different 3 | ????????? is Cyrillic 4 | ? am Deseret 5 | -------------------------------------------------------------------------------- /src/ReportGenerator.Core.Test/Common/Encodings/latin1.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danielpalme/ReportGenerator/c68f7ccc8a96e4ba711598bedc7d8decbdb2506d/src/ReportGenerator.Core.Test/Common/Encodings/latin1.txt -------------------------------------------------------------------------------- /src/ReportGenerator.Core.Test/Common/Encodings/unicode_uft16_be.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danielpalme/ReportGenerator/c68f7ccc8a96e4ba711598bedc7d8decbdb2506d/src/ReportGenerator.Core.Test/Common/Encodings/unicode_uft16_be.txt -------------------------------------------------------------------------------- /src/ReportGenerator.Core.Test/Common/Encodings/unicode_uft16_le.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danielpalme/ReportGenerator/c68f7ccc8a96e4ba711598bedc7d8decbdb2506d/src/ReportGenerator.Core.Test/Common/Encodings/unicode_uft16_le.txt -------------------------------------------------------------------------------- /src/ReportGenerator.Core.Test/Common/Encodings/utf8.txt: -------------------------------------------------------------------------------- 1 | utf7 -------------------------------------------------------------------------------- /src/ReportGenerator.Core.Test/Common/Encodings/utf8_bom.txt: -------------------------------------------------------------------------------- 1 | utf8_bom -------------------------------------------------------------------------------- /src/ReportGenerator.Core.Test/Common/MathExtensionsTest.cs: -------------------------------------------------------------------------------- 1 | using Palmmedia.ReportGenerator.Core.Common; 2 | using Xunit; 3 | 4 | namespace Palmmedia.ReportGenerator.Core.Test.Common 5 | { 6 | public class MathExtensionsTest 7 | { 8 | [Theory] 9 | [InlineData(1, 1000, 1, 0.1)] 10 | [InlineData(1, 10000, 1, 0)] 11 | [InlineData(1, 100000, 1, 0)] 12 | 13 | [InlineData(1, 1000, 2, 0.1)] 14 | [InlineData(1, 10000, 2, 0.01)] 15 | [InlineData(1, 100000, 2, 0)] 16 | 17 | [InlineData(1, 1000, 3, 0.1)] 18 | [InlineData(1, 10000, 3, 0.01)] 19 | [InlineData(1, 100000, 3, 0.001)] 20 | public void CalculatePercentage(int number1, int number2, int maximumDecimalPlaces, decimal expected) 21 | { 22 | MathExtensions.MaximumDecimalPlaces = maximumDecimalPlaces; 23 | decimal result = MathExtensions.CalculatePercentage(number1, number2); 24 | Assert.Equal(expected, result); 25 | 26 | MathExtensions.MaximumDecimalPlaces = 1; 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/ReportGenerator.Core.Test/Common/StringExtensionsTest.cs: -------------------------------------------------------------------------------- 1 | using Palmmedia.ReportGenerator.Core.Common; 2 | using Xunit; 3 | 4 | namespace Palmmedia.ReportGenerator.Core.Test.Common 5 | { 6 | public class StringExtensionsTest 7 | { 8 | [Fact] 9 | public void ParseLargeInteger_CorrectResultReturned() 10 | { 11 | Assert.Equal(0, "0".ParseLargeInteger()); 12 | Assert.Equal(100, "100".ParseLargeInteger()); 13 | Assert.Equal(1000, "1000".ParseLargeInteger()); 14 | Assert.Equal(int.MaxValue, "2147483649".ParseLargeInteger()); 15 | } 16 | 17 | [Theory] 18 | [InlineData("a,b,c", new[] { "a", "b", "c" })] 19 | [InlineData("a,{b,c};d", new[] { "a", "{b,c}", "d" })] 20 | [InlineData("a,{b,c;d", new[] { "a", "{b", "c", "d" })] 21 | public void SplitThatEnsuresGlobsAreSafe_CorrectResultReturned(string input, string[] expectedParts) 22 | { 23 | var result = input.SplitThatEnsuresGlobsAreSafe(',', ';'); 24 | Assert.Equal(expectedParts, result); 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/ReportGenerator.Core.Test/LimitedVerbosityFixture.cs: -------------------------------------------------------------------------------- 1 | using Palmmedia.ReportGenerator.Core.Logging; 2 | 3 | namespace Palmmedia.ReportGenerator.Core.Test 4 | { 5 | public class LimitedVerbosityFixture 6 | { 7 | public LimitedVerbosityFixture() 8 | { 9 | new ConsoleLoggerFactory().VerbosityLevel = VerbosityLevel.Warning; 10 | } 11 | } 12 | } -------------------------------------------------------------------------------- /src/ReportGenerator.Core.Test/MsBuildTestScript.proj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /src/ReportGenerator.Core.Test/MsBuildTestScript_NetCore.proj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Exe 5 | net8.0 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /src/ReportGenerator.Core.Test/Settings.StyleCop: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | False 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /src/ReportGenerator.Core/CodeAnalysis/IRiskHotspotsAnalyzer.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using Palmmedia.ReportGenerator.Core.Parser.Analysis; 3 | 4 | namespace Palmmedia.ReportGenerator.Core.CodeAnalysis 5 | { 6 | /// 7 | /// Interface for risk hotspot analyzer. 8 | /// 9 | public interface IRiskHotspotsAnalyzer 10 | { 11 | /// 12 | /// Performs a risk hotspot analysis on the given assemblies. 13 | /// 14 | /// The assemlies to analyze. 15 | /// The risk hotspot analysis result. 16 | RiskHotspotAnalysisResult PerformRiskHotspotAnalysis(IEnumerable assemblies); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/ReportGenerator.Core/CodeAnalysis/MetricStatus.cs: -------------------------------------------------------------------------------- 1 | using Palmmedia.ReportGenerator.Core.Parser.Analysis; 2 | 3 | namespace Palmmedia.ReportGenerator.Core.CodeAnalysis 4 | { 5 | /// 6 | /// Represents the status of a metric. 7 | /// 8 | public class MetricStatus 9 | { 10 | /// 11 | /// Initializes a new instance of the class. 12 | /// 13 | /// The metric. 14 | /// Determines whether the metric's threshold is exceeded. 15 | public MetricStatus(Metric metric, bool exceeded) 16 | { 17 | this.Metric = metric; 18 | this.Exceeded = exceeded; 19 | } 20 | 21 | /// 22 | /// Gets the metric. 23 | /// 24 | public Metric Metric { get; } 25 | 26 | /// 27 | /// Gets a value indicating whether the metric's threshold is exceeded. 28 | /// 29 | public bool Exceeded { get; } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/ReportGenerator.Core/Common/GlobbingFileSearch.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace Palmmedia.ReportGenerator.Core.Common 4 | { 5 | /// 6 | /// Searches files based on file pattern with support for globbing. 7 | /// 8 | internal static class GlobbingFileSearch 9 | { 10 | /// 11 | /// Gets the files matching the given file pattern.. 12 | /// 13 | /// The file pattern. 14 | /// The files. 15 | internal static IEnumerable GetFiles(string pattern) 16 | { 17 | return new Glob(pattern).ExpandNames(); 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/ReportGenerator.Core/Licensing/LicenseType.cs: -------------------------------------------------------------------------------- 1 | namespace Palmmedia.ReportGenerator.Core.Licensing 2 | { 3 | /// 4 | /// Enumeration for the license types. 5 | /// 6 | public enum LicenseType 7 | { 8 | /// 9 | /// No license. 10 | /// 11 | None, 12 | 13 | /// 14 | /// Pro license. 15 | /// 16 | Pro 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/ReportGenerator.Core/Licensing/LicenseWrapper.cs: -------------------------------------------------------------------------------- 1 | namespace Palmmedia.ReportGenerator.Core.Licensing 2 | { 3 | /// 4 | /// Wrapps the license together with the signature. 5 | /// 6 | internal class LicenseWrapper 7 | { 8 | /// 9 | /// Gets or sets the license. 10 | /// 11 | public License License { get; set; } 12 | 13 | /// 14 | /// Gets or sets the signature. 15 | /// 16 | public string Signature { get; set; } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/ReportGenerator.Core/Logging/ILoggerFactory.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Palmmedia.ReportGenerator.Core.Logging 4 | { 5 | /// 6 | /// Provides objects creation capabilities. 7 | /// 8 | public interface ILoggerFactory 9 | { 10 | /// 11 | /// Gets or sets the verbosity of objects. 12 | /// 13 | VerbosityLevel VerbosityLevel { get; set; } 14 | 15 | /// 16 | /// Initializes the logger for the given type. 17 | /// 18 | /// The type of the class that uses the logger. 19 | /// The logger. 20 | ILogger GetLogger(Type type); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/ReportGenerator.Core/Logging/VerbosityLevel.cs: -------------------------------------------------------------------------------- 1 | namespace Palmmedia.ReportGenerator.Core.Logging 2 | { 3 | /// 4 | /// Enumeration for the logging verbosity. 5 | /// 6 | public enum VerbosityLevel 7 | { 8 | /// 9 | /// All messages are logged. 10 | /// 11 | Verbose, 12 | 13 | /// 14 | /// Only important messages are logged. 15 | /// 16 | Info, 17 | 18 | /// 19 | /// Only warnings and errors are logged. 20 | /// 21 | Warning, 22 | 23 | /// 24 | /// Only errors are logged. 25 | /// 26 | Error, 27 | 28 | /// 29 | /// Nothing is logged. 30 | /// 31 | Off 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/ReportGenerator.Core/Parser/Analysis/CodeElementType.cs: -------------------------------------------------------------------------------- 1 | namespace Palmmedia.ReportGenerator.Core.Parser.Analysis 2 | { 3 | /// 4 | /// Type of . 5 | /// 6 | public enum CodeElementType 7 | { 8 | /// 9 | /// Represents a property. 10 | /// 11 | Property, 12 | 13 | /// 14 | /// Represents a method. 15 | /// 16 | Method 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/ReportGenerator.Core/Parser/Analysis/CoverageByTrackedMethod.cs: -------------------------------------------------------------------------------- 1 | namespace Palmmedia.ReportGenerator.Core.Parser.Analysis 2 | { 3 | /// 4 | /// Coverage information for a test method. 5 | /// 6 | internal class CoverageByTrackedMethod 7 | { 8 | /// 9 | /// Gets or sets an array containing the coverage information by line number. 10 | /// -1: Not coverable. 11 | /// 0: Not visited. 12 | /// >0: Number of visits. 13 | /// 14 | internal int[] Coverage { get; set; } 15 | 16 | /// 17 | /// Gets or sets an array containing the line visit status by line number. 18 | /// 19 | internal LineVisitStatus[] LineVisitStatus { get; set; } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/ReportGenerator.Core/Parser/Analysis/FlagsLineVisitStatus.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Palmmedia.ReportGenerator.Core.Parser.Analysis 4 | { 5 | /// 6 | /// Indicates the coverage status of a line in a source file. 7 | /// 8 | [Flags] 9 | internal enum FlagsLineVisitStatus 10 | { 11 | /// 12 | /// Line can not be covered. 13 | /// 14 | NotCoverable = 0, 15 | 16 | /// 17 | /// Line was not covered. 18 | /// 19 | NotCovered = 1, 20 | 21 | /// 22 | /// Line was partially covered. 23 | /// 24 | PartiallyCovered = 2, 25 | 26 | /// 27 | /// Line was covered. 28 | /// 29 | Covered = 4 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/ReportGenerator.Core/Parser/Analysis/LineVisitStatus.cs: -------------------------------------------------------------------------------- 1 | namespace Palmmedia.ReportGenerator.Core.Parser.Analysis 2 | { 3 | /// 4 | /// Indicates the coverage status of a line in a source file. 5 | /// 6 | public enum LineVisitStatus 7 | { 8 | /// 9 | /// Line can not be covered. 10 | /// 11 | NotCoverable, 12 | 13 | /// 14 | /// Line was not covered. 15 | /// 16 | NotCovered, 17 | 18 | /// 19 | /// Line was partially covered. 20 | /// 21 | PartiallyCovered, 22 | 23 | /// 24 | /// Line was covered. 25 | /// 26 | Covered 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/ReportGenerator.Core/Parser/Analysis/MetricMergeOrder.cs: -------------------------------------------------------------------------------- 1 | namespace Palmmedia.ReportGenerator.Core.Parser.Analysis 2 | { 3 | /// 4 | /// Indicates metric merge order. 5 | /// 6 | public enum MetricMergeOrder 7 | { 8 | /// 9 | /// Higher values are better. 10 | /// 11 | HigherIsBetter, 12 | 13 | /// 14 | /// Lower values are better. 15 | /// 16 | LowerIsBetter 17 | } 18 | } -------------------------------------------------------------------------------- /src/ReportGenerator.Core/Parser/Analysis/MetricType.cs: -------------------------------------------------------------------------------- 1 | namespace Palmmedia.ReportGenerator.Core.Parser.Analysis 2 | { 3 | /// 4 | /// Type of a . 5 | /// 6 | public enum MetricType 7 | { 8 | /// 9 | /// Percentual value (e.g. line coverage). 10 | /// 11 | CoveragePercentual, 12 | 13 | /// 14 | /// A sumable metric (e.g. number of covered/uncovered blocks). 15 | /// 16 | CoverageAbsolute, 17 | 18 | /// 19 | /// Code quality indicator (e.g. cyclomatic complexity). 20 | /// 21 | CodeQuality, 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/ReportGenerator.Core/Parser/FileReading/IFileReader.cs: -------------------------------------------------------------------------------- 1 | namespace Palmmedia.ReportGenerator.Core.Parser.FileReading 2 | { 3 | /// 4 | /// Interface for file access. 5 | /// 6 | internal interface IFileReader 7 | { 8 | /// 9 | /// Loads the file with the given path. 10 | /// 11 | /// The path. 12 | /// Error message if file reading failed, otherwise null. 13 | /// null if an error occurs, otherwise the lines of the file. 14 | string[] LoadFile(string path, out string error); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/ReportGenerator.Core/Parser/Filtering/IFilter.cs: -------------------------------------------------------------------------------- 1 | namespace Palmmedia.ReportGenerator.Core.Parser.Filtering 2 | { 3 | /// 4 | /// Interface to filter assemblies and classes based on their name during report generation. 5 | /// This can be used to include only a subset of all assemblies/classes in the report. 6 | /// 7 | public interface IFilter 8 | { 9 | /// 10 | /// Gets a value indicating whether custom filter are applied. 11 | /// 12 | /// 13 | /// true if custom filter are applied; otherwise, false. 14 | /// 15 | bool HasCustomFilters { get; } 16 | 17 | /// 18 | /// Determines whether the given element should be included in the report. 19 | /// 20 | /// Name of the element. 21 | /// 22 | /// true if element should be included in the report; otherwise, false. 23 | /// 24 | bool IsElementIncludedInReport(string name); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/ReportGenerator.Core/Plugin/DefaultAssemblyLoader.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | 3 | namespace Palmmedia.ReportGenerator.Core.Plugin 4 | { 5 | /// 6 | /// The default assembly loader. 7 | /// 8 | internal class DefaultAssemblyLoader : IAssemblyLoader 9 | { 10 | /// 11 | /// Loads the assembly with the given name. 12 | /// 13 | /// The name of the assembly. 14 | /// The assembly. 15 | public Assembly Load(string name) 16 | { 17 | return Assembly.LoadFrom(name); 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/ReportGenerator.Core/Plugin/IAssemblyLoader.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | 3 | namespace Palmmedia.ReportGenerator.Core.Plugin 4 | { 5 | /// 6 | /// Interface for assembly loaders. 7 | /// 8 | public interface IAssemblyLoader 9 | { 10 | /// 11 | /// Loads the assembly with the given name. 12 | /// 13 | /// The name of the assembly. 14 | /// The assembly. 15 | Assembly Load(string name); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/ReportGenerator.Core/Plugin/IPluginLoader.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace Palmmedia.ReportGenerator.Core.Plugin 4 | { 5 | /// 6 | /// Interface for loading plugins at runtime. 7 | /// 8 | internal interface IPluginLoader 9 | { 10 | /// 11 | /// Determines all available plugins from a certain type. 12 | /// 13 | /// The plugin type. 14 | /// All available plugins. 15 | IReadOnlyCollection LoadInstancesOfType(); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/ReportGenerator.Core/ProgramIcon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danielpalme/ReportGenerator/c68f7ccc8a96e4ba711598bedc7d8decbdb2506d/src/ReportGenerator.Core/ProgramIcon.ico -------------------------------------------------------------------------------- /src/ReportGenerator.Core/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | [assembly: System.Runtime.CompilerServices.InternalsVisibleTo("ReportGenerator.Core.Test, PublicKey=002400000480000094000000060200000024000052534131000400000100010001b2e0fd2c33078e5bc48ce0c850634f8a79a3e7c08bd7a53cc76c3c25eca25d2c27627b530c50827d4dcbf41f6a1081c92168062637702f099169f2aaff1152b54fdf8f6d80184fe12493a047260f9d84b957300de136bdbe90b0b3deec03ed4478e5c7ee9b3f8871b2ad8035f395ebbca57e895b05cb9ffa9c7b1fcc2709a9")] 2 | [assembly: System.Runtime.CompilerServices.InternalsVisibleTo("DynamicProxyGenAssembly2,PublicKey=0024000004800000940000000602000000240000525341310004000001000100c547cac37abd99c8db225ef2f6c8a3602f3b3606cc9891605d02baa56104f4cfc0734aa39b93bf7852f7d9266654753cc297e7d2edfe0bac1cdcf9f717241550e0a7b191195b7667bb4f64bcb8e2121380fd1d9d46ad2d92d2d15605093924cceaf74c4861eff62abf69b9291ed0a340e113be11e6a7d3113e92484cf7045cc7")] -------------------------------------------------------------------------------- /src/ReportGenerator.Core/Reporting/Builders/OpenCoverReportBuilder.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danielpalme/ReportGenerator/c68f7ccc8a96e4ba711598bedc7d8decbdb2506d/src/ReportGenerator.Core/Reporting/Builders/OpenCoverReportBuilder.cs -------------------------------------------------------------------------------- /src/ReportGenerator.Core/Reporting/Builders/Rendering/CardLineItemAlignment.cs: -------------------------------------------------------------------------------- 1 | namespace Palmmedia.ReportGenerator.Core.Reporting.Builders.Rendering 2 | { 3 | /// 4 | /// Determines the alignement of a line item. 5 | /// 6 | public enum CardLineItemAlignment 7 | { 8 | /// 9 | /// Right alignment. 10 | /// 11 | Right, 12 | 13 | /// 14 | /// Left alignment. 15 | /// 16 | Left 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/ReportGenerator.Core/Reporting/Builders/Rendering/HtmlMode.cs: -------------------------------------------------------------------------------- 1 | namespace Palmmedia.ReportGenerator.Core.Reporting.Builders.Rendering 2 | { 3 | /// 4 | /// Defines how CSS and JavaScript are referenced. 5 | /// 6 | internal enum HtmlMode 7 | { 8 | /// 9 | /// CSS and JavaScript is saved into separate files. 10 | /// 11 | ExternalCssAndJavaScript, 12 | 13 | /// 14 | /// CSS and JavaScript are saved into separate files but query string is appended dynamically to link 'href' and script 'src'. 15 | /// 16 | ExternalCssAndJavaScriptWithQueryStringHandling, 17 | 18 | /// 19 | /// CSS and JavaScript is included into the HTML instead of separate files. 20 | /// 21 | InlineCssAndJavaScript 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/ReportGenerator.Core/Reporting/Builders/Rendering/resources/custom_bluered.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --green: #244d9c; 3 | --lightgreen: #ccdeff; 4 | } 5 | -------------------------------------------------------------------------------- /src/ReportGenerator.Core/Reporting/Builders/Rendering/resources/runtime.js: -------------------------------------------------------------------------------- 1 | (()=>{"use strict";var e,_={},p={};function n(e){var a=p[e];if(void 0!==a)return a.exports;var r=p[e]={exports:{}};return _[e](r,r.exports,n),r.exports}n.m=_,e=[],n.O=(a,r,u,l)=>{if(!r){var o=1/0;for(f=0;f=l)&&Object.keys(n.O).every(h=>n.O[h](r[t]))?r.splice(t--,1):(v=!1,l0&&e[f-1][2]>l;f--)e[f]=e[f-1];e[f]=[r,u,l]},n.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return n.d(a,{a}),a},n.d=(e,a)=>{for(var r in a)n.o(a,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:a[r]})},n.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),(()=>{var e={121:0};n.O.j=u=>0===e[u];var a=(u,l)=>{var t,c,[f,o,v]=l,s=0;if(f.some(d=>0!==e[d])){for(t in o)n.o(o,t)&&(n.m[t]=o[t]);if(v)var b=v(n)}for(u&&u(l);s 4 | /// Represents the Git information. 5 | /// 6 | internal class GitInformation 7 | { 8 | /// 9 | /// Gets or sets the branch. 10 | /// 11 | public string Branch { get; set; } 12 | 13 | /// 14 | /// Gets or sets the sha hash. 15 | /// 16 | public string Sha { get; set; } 17 | 18 | /// 19 | /// Gets or sets the timestamp. 20 | /// 21 | public string TimeStamp { get; set; } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/ReportGenerator.Core/Reporting/History/IHistoryStorage.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.IO; 3 | 4 | namespace Palmmedia.ReportGenerator.Core.Reporting.History 5 | { 6 | /// 7 | /// Interface for storage of history reports. 8 | /// 9 | public interface IHistoryStorage 10 | { 11 | /// 12 | /// Gets the history file paths. 13 | /// 14 | /// The history file paths. 15 | IEnumerable GetHistoryFilePaths(); 16 | 17 | /// 18 | /// Loads the given file. 19 | /// 20 | /// The file path. 21 | /// The file as stream. 22 | Stream LoadFile(string filePath); 23 | 24 | /// 25 | /// Saves the file with the given name. 26 | /// 27 | /// The stream containing the file content. 28 | /// Name of the file. 29 | void SaveFile(Stream stream, string fileName); 30 | } 31 | } -------------------------------------------------------------------------------- /src/ReportGenerator.Core/Reporting/IReportBuilderFactory.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace Palmmedia.ReportGenerator.Core.Reporting 4 | { 5 | /// 6 | /// Interface for factories that create instances of . 7 | /// 8 | public interface IReportBuilderFactory 9 | { 10 | /// 11 | /// Gets the available report types. 12 | /// 13 | /// The available report types. 14 | IEnumerable GetAvailableReportTypes(); 15 | 16 | /// 17 | /// Gets the report builders that correspond to the given . 18 | /// 19 | /// The report context. 20 | /// 21 | /// The report builders. 22 | /// 23 | IEnumerable GetReportBuilders(IReportContext reportContext); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/ReportGenerator.Core/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "riskHotspotsAnalysisThresholds": { 3 | "metricThresholdForCyclomaticComplexity": 15, 4 | "metricThresholdForCrapScore": 30, 5 | "metricThresholdForNPathComplexity": 200, 6 | "maximumThresholdForCyclomaticComplexity": null, 7 | "maximumThresholdForCrapScore": null, 8 | "maximumThresholdForNPathComplexity": null 9 | }, 10 | "minimumCoverageThresholds": { 11 | "lineCoverage": null, 12 | "branchCoverage": null, 13 | "methodCoverage": null, 14 | "fullMethodCoverage": null 15 | }, 16 | "settings": { 17 | "numberOfReportsParsedInParallel": 1, 18 | "numberOfReportsMergedInParallel": 1, 19 | "maximumNumberOfHistoricCoverageFiles": 100, 20 | "cachingDurationOfRemoteFilesInMinutes": 10080, 21 | "disableRiskHotspots": false, 22 | "excludeTestProjects": false, 23 | "createSubdirectoryForAllReportTypes": false, 24 | "customHeadersForRemoteFiles": null, 25 | "defaultAssemblyName": "Default", 26 | "maximumDecimalPlacesForCoverageQuotas": 1, 27 | "historyFileNamePrefix": null, 28 | "rawMode": false 29 | } 30 | } -------------------------------------------------------------------------------- /src/ReportGenerator.Core/stylecop.ruleset: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /src/ReportGenerator.DotnetCorePluginLoader/DotnetCoreAssemblyLoader.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using McMaster.NETCore.Plugins; 3 | using Palmmedia.ReportGenerator.Core.Plugin; 4 | using Palmmedia.ReportGenerator.Core.Reporting; 5 | using Palmmedia.ReportGenerator.Core.Reporting.History; 6 | 7 | namespace ReportGenerator.DotnetCorePluginLoader 8 | { 9 | /// 10 | /// Aassembly loader for .NET Core. 11 | /// 12 | public class DotNetCoreAssemblyLoader : IAssemblyLoader 13 | { 14 | /// 15 | /// Loads the assembly with the given name. 16 | /// 17 | /// The name of the assembly. 18 | /// The assembly. 19 | public Assembly Load(string name) 20 | { 21 | PluginLoader loader = PluginLoader.CreateFromAssemblyFile( 22 | name, 23 | sharedTypes: new[] { typeof(IReportBuilder), typeof(IHistoryStorage) }); 24 | 25 | Assembly assembly = loader.LoadDefaultAssembly(); 26 | 27 | return assembly; 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/ReportGenerator.DotnetCorePluginLoader/ReportGenerator.DotnetCorePluginLoader.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | net8.0;net9.0 4 | ReportGenerator.DotnetCorePluginLoader 5 | 5.4.7.0 6 | 5.4.7.0 7 | True 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /src/ReportGenerator.DotnetGlobalTool/Program.cs: -------------------------------------------------------------------------------- 1 | namespace Palmmedia.ReportGenerator.DotnetGlobalTool 2 | { 3 | /// 4 | /// Command line access to the ReportBuilder. 5 | /// 6 | internal class Program 7 | { 8 | /// 9 | /// The main method. 10 | /// 11 | /// The command line arguments. 12 | /// Return code indicating success/failure. 13 | internal static int Main(string[] args) 14 | { 15 | return Core.Program.Main(args); 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/ReportGenerator.DotnetGlobalTool/ProgramIcon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danielpalme/ReportGenerator/c68f7ccc8a96e4ba711598bedc7d8decbdb2506d/src/ReportGenerator.DotnetGlobalTool/ProgramIcon.ico -------------------------------------------------------------------------------- /src/ReportGenerator.DotnetGlobalTool/runtimeconfig.template.json: -------------------------------------------------------------------------------- 1 | { 2 | "rollForwardOnNoCandidateFx": 2 3 | } 4 | -------------------------------------------------------------------------------- /src/ReportGenerator.MSBuild/ReportGenerator.MSBuild.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | netstandard2.0 5 | Palmmedia.ReportGenerator.MSBuild 6 | false 7 | true 8 | 5.4.7.0 9 | 5.4.7.0 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /src/ReportGenerator.snk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danielpalme/ReportGenerator/c68f7ccc8a96e4ba711598bedc7d8decbdb2506d/src/ReportGenerator.snk -------------------------------------------------------------------------------- /src/Testprojects/C++/Projects/build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | gcc -o main -fprofile-arcs -ftest-coverage main.cpp 4 | ./main 5 | 6 | mkdir basic 7 | gcov main.cpp 8 | mv -f main.cpp.gcov basic/main.cpp.gcov 9 | mv -f calculator.cpp.gcov basic/calculator.cpp.gcov 10 | 11 | mkdir branch_probabilities 12 | gcov -b main.cpp 13 | mv -f main.cpp.gcov branch_probabilities/main.cpp.gcov 14 | mv -f calculator.cpp.gcov branch_probabilities/calculator.cpp.gcov 15 | 16 | mkdir branch_counts 17 | gcov -b -c main.cpp 18 | mv -f main.cpp.gcov branch_counts/main.cpp.gcov 19 | mv -f calculator.cpp.gcov branch_counts/calculator.cpp.gcov 20 | 21 | mkdir branch_unconditional 22 | gcov -b -c -u main.cpp 23 | mv -f main.cpp.gcov branch_unconditional/main.cpp.gcov 24 | mv -f calculator.cpp.gcov branch_unconditional/calculator.cpp.gcov -------------------------------------------------------------------------------- /src/Testprojects/C++/Projects/main.cpp: -------------------------------------------------------------------------------- 1 | #include "sub/calculator.cpp" 2 | 3 | int GreatestOfThree(int a,int b,int c){ 4 | if((a>b) && (a>c)){ 5 | return a; 6 | } 7 | else if(b>c){ 8 | return b; 9 | } 10 | else{ 11 | return c; 12 | } 13 | return 0; 14 | } 15 | 16 | 17 | int main() 18 | { 19 | GreatestOfThree(1,2,3); 20 | Add(3,1); 21 | Add(1,3); 22 | return 0; 23 | 24 | } -------------------------------------------------------------------------------- /src/Testprojects/C++/Projects/sub/calculator.cpp: -------------------------------------------------------------------------------- 1 | int Add(int a,int b){ 2 | if (a > b) 3 | { 4 | return a + b; 5 | } 6 | else 7 | { 8 | return 42; 9 | } 10 | } -------------------------------------------------------------------------------- /src/Testprojects/C++/Reports/Cobertura_CPPCoverage.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /src/Testprojects/C++/Reports/gcov/basic/calculator.cpp.gcov: -------------------------------------------------------------------------------- 1 | -: 0:Source:sub/calculator.cpp 2 | -: 0:Graph:main.gcno 3 | -: 0:Data:main.gcda 4 | -: 0:Runs:1 5 | -: 0:Programs:1 6 | 2: 1:int Add(int a,int b){ 7 | 2: 2: if (a > b) 8 | -: 3: { 9 | 1: 4: return a + b; 10 | -: 5: } 11 | -: 6: else 12 | -: 7: { 13 | 1: 8: return 42; 14 | -: 9: } 15 | -: 10:} 16 | -------------------------------------------------------------------------------- /src/Testprojects/C++/Reports/gcov/basic/main.cpp.gcov: -------------------------------------------------------------------------------- 1 | -: 0:Source:main.cpp 2 | -: 0:Graph:main.gcno 3 | -: 0:Data:main.gcda 4 | -: 0:Runs:1 5 | -: 0:Programs:1 6 | -: 1:#include "sub/calculator.cpp" 7 | -: 2: 8 | 1: 3:int GreatestOfThree(int a,int b,int c){ 9 | 1: 4: if((a>b) && (a>c)){ 10 | #####: 5: return a; 11 | -: 6: } 12 | 1: 7: else if(b>c){ 13 | #####: 8: return b; 14 | -: 9: } 15 | -: 10: else{ 16 | 1: 11: return c; 17 | -: 12: } 18 | -: 13: return 0; 19 | -: 14:} 20 | -: 15: 21 | -: 16: 22 | 1: 17:int main() 23 | -: 18:{ 24 | 1: 19: GreatestOfThree(1,2,3); 25 | 1: 20: Add(3,1); 26 | 1: 21: Add(1,3); 27 | 1: 22: return 0; 28 | -: 23: 29 | -: 24:} 30 | -------------------------------------------------------------------------------- /src/Testprojects/C++/Reports/gcov/branch_counts/calculator.cpp.gcov: -------------------------------------------------------------------------------- 1 | -: 0:Source:sub/calculator.cpp 2 | -: 0:Graph:main.gcno 3 | -: 0:Data:main.gcda 4 | -: 0:Runs:1 5 | -: 0:Programs:1 6 | function _Z3Addii called 2 returned 100% blocks executed 100% 7 | 2: 1:int Add(int a,int b){ 8 | 2: 2: if (a > b) 9 | branch 0 taken 1 (fallthrough) 10 | branch 1 taken 1 11 | -: 3: { 12 | 1: 4: return a + b; 13 | -: 5: } 14 | -: 6: else 15 | -: 7: { 16 | 1: 8: return 42; 17 | -: 9: } 18 | -: 10:} 19 | -------------------------------------------------------------------------------- /src/Testprojects/C++/Reports/gcov/branch_probabilities/calculator.cpp.gcov: -------------------------------------------------------------------------------- 1 | -: 0:Source:sub/calculator.cpp 2 | -: 0:Graph:main.gcno 3 | -: 0:Data:main.gcda 4 | -: 0:Runs:1 5 | -: 0:Programs:1 6 | function _Z3Addii called 2 returned 100% blocks executed 100% 7 | 2: 1:int Add(int a,int b){ 8 | 2: 2: if (a > b) 9 | branch 0 taken 50% (fallthrough) 10 | branch 1 taken 50% 11 | -: 3: { 12 | 1: 4: return a + b; 13 | -: 5: } 14 | -: 6: else 15 | -: 7: { 16 | 1: 8: return 42; 17 | -: 9: } 18 | -: 10:} 19 | -------------------------------------------------------------------------------- /src/Testprojects/C++/Reports/gcov/branch_unconditional/calculator.cpp.gcov: -------------------------------------------------------------------------------- 1 | -: 0:Source:sub/calculator.cpp 2 | -: 0:Graph:main.gcno 3 | -: 0:Data:main.gcda 4 | -: 0:Runs:1 5 | -: 0:Programs:1 6 | function _Z3Addii called 2 returned 100% blocks executed 100% 7 | 2: 1:int Add(int a,int b){ 8 | 2: 2: if (a > b) 9 | branch 0 taken 1 (fallthrough) 10 | branch 1 taken 1 11 | -: 3: { 12 | 1: 4: return a + b; 13 | unconditional 0 taken 1 14 | -: 5: } 15 | -: 6: else 16 | -: 7: { 17 | 1: 8: return 42; 18 | unconditional 0 taken 1 19 | -: 9: } 20 | -: 10:} 21 | -------------------------------------------------------------------------------- /src/Testprojects/C++/Reports/lcov.info: -------------------------------------------------------------------------------- 1 | TN: 2 | SF:C:\temp\sub\calculator.cpp 3 | DA:1,2 4 | DA:2,2 5 | DA:4,1 6 | DA:8,1 7 | LF:4 8 | LH:4 9 | end_of_record 10 | SF:C:\temp\main.cpp 11 | FN:3,_Z15GreatestOfThreeiii 12 | FN:17,main 13 | FNDA:1,_Z15GreatestOfThreeiii 14 | FNDA:1,main 15 | FNF:2 16 | FNH:2 17 | DA:3,1 18 | DA:4,1 19 | DA:5,0 20 | DA:7,1 21 | DA:8,0 22 | DA:11,1 23 | DA:17,1 24 | DA:19,1 25 | DA:20,1 26 | DA:21,1 27 | DA:22,1 28 | LF:11 29 | LH:9 30 | end_of_record 31 | SF:C:\temp\calculator.cpp 32 | FN:1,_Z3Addii 33 | FNDA:2,_Z3Addii 34 | FNF:1 35 | FNH:1 36 | DA:1,2 37 | DA:2,2 38 | DA:4,1 39 | DA:8,1 40 | LF:4 41 | LH:4 42 | end_of_record 43 | -------------------------------------------------------------------------------- /src/Testprojects/CSharp/Project/AsyncClass.cs: -------------------------------------------------------------------------------- 1 | using System.Net.Http; 2 | using System.Threading; 3 | using System.Threading.Tasks; 4 | 5 | namespace Test 6 | { 7 | public class AsyncClass : DelegatingHandler 8 | { 9 | protected override async Task SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) 10 | { 11 | request.Properties.Add("hello", true); 12 | return await base.SendAsync(request, cancellationToken); 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/Testprojects/CSharp/Project/ClassWithExcludes.cs: -------------------------------------------------------------------------------- 1 | 2 | namespace Test 3 | { 4 | public class ClassWithExcludes 5 | { 6 | public string IncludedProperty { get; set; } 7 | 8 | [CoverageExclude] 9 | public string ExcludedProperty { get; set; } 10 | 11 | public void IncludedMethod() 12 | { 13 | this.IncludedProperty = "Test"; 14 | } 15 | 16 | [CoverageExclude] 17 | public void ExcludedMethod() 18 | { 19 | this.ExcludedProperty = "Test"; 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/Testprojects/CSharp/Project/CodeContract_Contract.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Diagnostics.Contracts; 3 | 4 | namespace Test 5 | { 6 | [ContractClassFor(typeof(CodeContract_Interface))] 7 | internal abstract class CodeContract_Contract : CodeContract_Interface 8 | { 9 | public int Calculate(int value) 10 | { 11 | Contract.Requires(value != 0, "Value must not be zero"); 12 | 13 | return default(int); 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/Testprojects/CSharp/Project/CodeContract_Interface.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Diagnostics.Contracts; 4 | using System.Linq; 5 | using System.Text; 6 | 7 | namespace Test 8 | { 9 | [ContractClass(typeof(CodeContract_Contract))] 10 | public interface CodeContract_Interface 11 | { 12 | int Calculate(int value); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Testprojects/CSharp/Project/CodeContract_Target.cs: -------------------------------------------------------------------------------- 1 | 2 | namespace Test 3 | { 4 | public class CodeContract_Target : CodeContract_Interface 5 | { 6 | public int Calculate(int value) 7 | { 8 | if (value < 0) 9 | { 10 | return 0; 11 | } 12 | else 13 | { 14 | return 1; 15 | } 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/Testprojects/CSharp/Project/CoverageExcludeAttribute.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Test 4 | { 5 | [CoverageExclude] 6 | [AttributeUsage(AttributeTargets.Method | AttributeTargets.Property | AttributeTargets.Class)] 7 | public class CoverageExcludeAttribute : Attribute 8 | { 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/Testprojects/CSharp/Project/NotMatchingFileName.cs: -------------------------------------------------------------------------------- 1 | 2 | namespace Test 3 | { 4 | public class SomeClass 5 | { 6 | public string Property1 { get; set; } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/Testprojects/CSharp/Project/PartialClass.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Test 4 | { 5 | partial class PartialClass 6 | { 7 | public void ExecutedMethod_1() 8 | { 9 | Console.WriteLine("Test"); 10 | } 11 | 12 | public void UnExecutedMethod_1() 13 | { 14 | Console.WriteLine("Test"); 15 | } 16 | 17 | private int someProperty; 18 | 19 | public int SomeProperty 20 | { 21 | get { return this.someProperty; } 22 | 23 | set 24 | { 25 | if (value < 0) 26 | { 27 | this.someProperty = 0; 28 | } 29 | else 30 | { 31 | this.someProperty = value; 32 | } 33 | } 34 | } 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /src/Testprojects/CSharp/Project/PartialClass2.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Test 4 | { 5 | partial class PartialClass 6 | { 7 | public void ExecutedMethod_2() 8 | { 9 | Console.WriteLine("Test"); 10 | } 11 | 12 | public void UnExecutedMethod_2() 13 | { 14 | Console.WriteLine("Test"); 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/Testprojects/CSharp/Project/PartialClassWithAutoProperties.cs: -------------------------------------------------------------------------------- 1 | 2 | namespace Test 3 | { 4 | public partial class PartialClassWithAutoProperties 5 | { 6 | public string Property1 { get; set; } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/Testprojects/CSharp/Project/PartialClassWithAutoProperties2.cs: -------------------------------------------------------------------------------- 1 | 2 | namespace Test 3 | { 4 | public partial class PartialClassWithAutoProperties 5 | { 6 | public string Property2 { get; set; } 7 | 8 | public string ExpressionBodiedProperty => "Test"; 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/Testprojects/CSharp/Project/TestClass.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Test 4 | { 5 | class TestClass 6 | { 7 | public void SampleFunction() 8 | { 9 | string test = string.Format( 10 | "{0} {1}", 11 | "Hello", 12 | "World"); 13 | 14 | Console.WriteLine(test); 15 | int i = 10; 16 | 17 | if (i > 0 || i > 1) 18 | { 19 | Console.WriteLine(i + " is greater that 0"); 20 | } 21 | else 22 | { 23 | Console.WriteLine(i + " is not greater that 0"); 24 | } 25 | } 26 | 27 | public class NestedClass 28 | { 29 | public void SampleFunction() 30 | { 31 | Console.WriteLine( 32 | "{0} {1}", 33 | "Hello", 34 | "World"); 35 | } 36 | } 37 | } 38 | } -------------------------------------------------------------------------------- /src/Testprojects/CSharp/Project/app.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/Testprojects/CSharp/Project_DotNetCore/Test/AsyncClass.cs: -------------------------------------------------------------------------------- 1 | using System.Net.Http; 2 | using System.Threading; 3 | using System.Threading.Tasks; 4 | 5 | namespace Test 6 | { 7 | public class AsyncClass : DelegatingHandler 8 | { 9 | protected override async Task SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) 10 | { 11 | request.Properties.Add("hello", true); 12 | return await base.SendAsync(request, cancellationToken); 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/Testprojects/CSharp/Project_DotNetCore/Test/ClassWithExcludes.cs: -------------------------------------------------------------------------------- 1 | 2 | namespace Test 3 | { 4 | public class ClassWithExcludes 5 | { 6 | public string IncludedProperty { get; set; } 7 | 8 | [CoverageExclude] 9 | public string ExcludedProperty { get; set; } 10 | 11 | public void IncludedMethod() 12 | { 13 | this.IncludedProperty = "Test"; 14 | } 15 | 16 | [CoverageExclude] 17 | public void ExcludedMethod() 18 | { 19 | this.ExcludedProperty = "Test"; 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/Testprojects/CSharp/Project_DotNetCore/Test/ClassWithLocalFunctions.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Threading.Tasks; 3 | 4 | namespace Test 5 | { 6 | public class ClassWithLocalFunctions 7 | { 8 | public class MyNestedClass 9 | { 10 | public T2 MyProperty { get; set; } 11 | 12 | public async Task MyAsyncMethod(T3 myParam) 13 | { 14 | await MyAsyncLocalFunction(); 15 | 16 | async Task MyAsyncLocalFunction() 17 | { 18 | Console.WriteLine(myParam); 19 | Console.WriteLine(MyProperty); 20 | 21 | await Task.CompletedTask; 22 | } 23 | } 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/Testprojects/CSharp/Project_DotNetCore/Test/CodeContract_Contract.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Diagnostics.Contracts; 3 | 4 | namespace Test 5 | { 6 | [ContractClassFor(typeof(CodeContract_Interface))] 7 | internal abstract class CodeContract_Contract : CodeContract_Interface 8 | { 9 | public int Calculate(int value) 10 | { 11 | Contract.Requires(value != 0, "Value must not be zero"); 12 | 13 | return default(int); 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/Testprojects/CSharp/Project_DotNetCore/Test/CodeContract_Interface.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Diagnostics.Contracts; 4 | using System.Linq; 5 | using System.Text; 6 | 7 | namespace Test 8 | { 9 | [ContractClass(typeof(CodeContract_Contract))] 10 | public interface CodeContract_Interface 11 | { 12 | int Calculate(int value); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Testprojects/CSharp/Project_DotNetCore/Test/CodeContract_Target.cs: -------------------------------------------------------------------------------- 1 | 2 | namespace Test 3 | { 4 | public class CodeContract_Target : CodeContract_Interface 5 | { 6 | public int Calculate(int value) 7 | { 8 | if (value < 0) 9 | { 10 | return 0; 11 | } 12 | else 13 | { 14 | return 1; 15 | } 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/Testprojects/CSharp/Project_DotNetCore/Test/CoverageExcludeAttribute.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Test 4 | { 5 | [CoverageExclude] 6 | [AttributeUsage(AttributeTargets.Method | AttributeTargets.Property | AttributeTargets.Class)] 7 | public class CoverageExcludeAttribute : Attribute 8 | { 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/Testprojects/CSharp/Project_DotNetCore/Test/GenericAsyncClass.cs: -------------------------------------------------------------------------------- 1 | using System.Net.Http; 2 | using System.Threading; 3 | using System.Threading.Tasks; 4 | 5 | namespace Test 6 | { 7 | public class GenericAsyncClass 8 | { 9 | public async Task MyAsyncMethod() 10 | { 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/Testprojects/CSharp/Project_DotNetCore/Test/NotMatchingFileName.cs: -------------------------------------------------------------------------------- 1 | 2 | namespace Test 3 | { 4 | public class SomeClass 5 | { 6 | public string Property1 { get; set; } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/Testprojects/CSharp/Project_DotNetCore/Test/PartialClass.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Test 4 | { 5 | partial class PartialClass 6 | { 7 | public void ExecutedMethod_1() 8 | { 9 | Console.WriteLine("Test"); 10 | } 11 | 12 | public void UnExecutedMethod_1() 13 | { 14 | Console.WriteLine("Test"); 15 | } 16 | 17 | private int someProperty; 18 | 19 | public int SomeProperty 20 | { 21 | get { return this.someProperty; } 22 | 23 | set 24 | { 25 | if (value < 0) 26 | { 27 | this.someProperty = 0; 28 | } 29 | else 30 | { 31 | this.someProperty = value; 32 | } 33 | } 34 | } 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /src/Testprojects/CSharp/Project_DotNetCore/Test/PartialClass2.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Test 4 | { 5 | partial class PartialClass 6 | { 7 | public void ExecutedMethod_2() 8 | { 9 | Console.WriteLine("Test"); 10 | } 11 | 12 | public void UnExecutedMethod_2() 13 | { 14 | Console.WriteLine("Test"); 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/Testprojects/CSharp/Project_DotNetCore/Test/PartialClassWithAutoProperties.cs: -------------------------------------------------------------------------------- 1 | 2 | namespace Test 3 | { 4 | public partial class PartialClassWithAutoProperties 5 | { 6 | public string Property1 { get; set; } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/Testprojects/CSharp/Project_DotNetCore/Test/PartialClassWithAutoProperties2.cs: -------------------------------------------------------------------------------- 1 | 2 | namespace Test 3 | { 4 | public partial class PartialClassWithAutoProperties 5 | { 6 | public string Property2 { get; set; } 7 | 8 | public string ExpressionBodiedProperty => "Test"; 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/Testprojects/CSharp/Project_DotNetCore/Test/Test.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | net8.0 4 | false 5 | 6 | 7 | -------------------------------------------------------------------------------- /src/Testprojects/CSharp/Project_DotNetCore/UnitTests/UnitTest.cs: -------------------------------------------------------------------------------- 1 | using Test; 2 | using Xunit; 3 | 4 | namespace UnitTests 5 | { 6 | public class UnitTest 7 | { 8 | [Fact] 9 | public void CSharp_ExecuteTest1() 10 | { 11 | Program.Main(null); 12 | } 13 | 14 | [Fact] 15 | public void CSharp_ExecuteTest2() 16 | { 17 | Program.Main(null); 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/Testprojects/CSharp/Reports/MultiVisualStudio2010.coveragexml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danielpalme/ReportGenerator/c68f7ccc8a96e4ba711598bedc7d8decbdb2506d/src/Testprojects/CSharp/Reports/MultiVisualStudio2010.coveragexml -------------------------------------------------------------------------------- /src/Testprojects/CSharp/Reports/VisualStudio2010.coveragexml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danielpalme/ReportGenerator/c68f7ccc8a96e4ba711598bedc7d8decbdb2506d/src/Testprojects/CSharp/Reports/VisualStudio2010.coveragexml -------------------------------------------------------------------------------- /src/Testprojects/CSharp/Reports/VisualStudio2012.coveragexml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danielpalme/ReportGenerator/c68f7ccc8a96e4ba711598bedc7d8decbdb2506d/src/Testprojects/CSharp/Reports/VisualStudio2012.coveragexml -------------------------------------------------------------------------------- /src/Testprojects/CSharp/Reports/VisualStudio2013.coveragexml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danielpalme/ReportGenerator/c68f7ccc8a96e4ba711598bedc7d8decbdb2506d/src/Testprojects/CSharp/Reports/VisualStudio2013.coveragexml -------------------------------------------------------------------------------- /src/Testprojects/CSharp/Reports/VisualStudio2022.coveragexml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danielpalme/ReportGenerator/c68f7ccc8a96e4ba711598bedc7d8decbdb2506d/src/Testprojects/CSharp/Reports/VisualStudio2022.coveragexml -------------------------------------------------------------------------------- /src/Testprojects/Clover.ps1: -------------------------------------------------------------------------------- 1 | New-Item -ItemType Directory -Force Java\bin 2 | New-Item -ItemType Directory -Force Java\bin\classes 3 | New-Item -ItemType Directory -Force Java\bin\instrumented 4 | 5 | java -cp CoverageTools\OpenClover\clover.jar com.atlassian.clover.CloverInstr -i clover.db -s Java\Project -d Java\bin\instrumented 6 | 7 | javac -cp CoverageTools\OpenClover\clover.jar -d Java\bin\classes Java\bin\instrumented\test\*.java 8 | javac -cp CoverageTools\OpenClover\clover.jar -d Java\bin\classes Java\bin\instrumented\test\sub\*.java 9 | 10 | java -cp "CoverageTools\OpenClover\clover.jar;Java\bin\classes" test.Program 11 | 12 | java -cp CoverageTools\OpenClover\clover.jar com.atlassian.clover.reporters.xml.XMLReporter -l -i clover.db -o Java\Reports\Clover_OpenClover4.3.1.xml 13 | 14 | Remove-Item clover.db* 15 | 16 | $pathToReplace = [regex]::Escape((Get-Location).Path + "\Java\Project") 17 | $replacement = "C:\temp" 18 | 19 | (gc "Java\Reports\Clover_OpenClover4.3.1.xml") | % { $_ -replace $pathToReplace, $replacement } | Out-File "Java\Reports\Clover_OpenClover4.3.1.xml" -Encoding UTF8 20 | 21 | Remove-Item Java\bin -Force -Recurse -------------------------------------------------------------------------------- /src/Testprojects/FSharp/Project/Program.fs: -------------------------------------------------------------------------------- 1 | open Microsoft.VisualStudio.TestTools.UnitTesting 2 | open ViewModels 3 | 4 | [] 5 | type Tests() = 6 | [] 7 | member x.FSharp_ExecuteTest () = 8 | (new TestMouseBehavior()).RunTest() 9 | 10 | [] 11 | [] 12 | let main argv = 13 | printfn "Start" 14 | let behavior = new TestMouseBehavior() 15 | behavior.RunTest() 16 | printfn "End" 17 | 0 -------------------------------------------------------------------------------- /src/Testprojects/FSharp/Reports/VisualStudio2010.coveragexml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danielpalme/ReportGenerator/c68f7ccc8a96e4ba711598bedc7d8decbdb2506d/src/Testprojects/FSharp/Reports/VisualStudio2010.coveragexml -------------------------------------------------------------------------------- /src/Testprojects/FSharp/Reports/VisualStudio2013.coveragexml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/danielpalme/ReportGenerator/c68f7ccc8a96e4ba711598bedc7d8decbdb2506d/src/Testprojects/FSharp/Reports/VisualStudio2013.coveragexml -------------------------------------------------------------------------------- /src/Testprojects/JaCoCo.ps1: -------------------------------------------------------------------------------- 1 | New-Item -ItemType Directory -Force Java\bin 2 | New-Item -ItemType Directory -Force Java\bin\classes 3 | javac -d Java\bin\classes Java\Project\test\*.java 4 | javac -d Java\bin\classes Java\Project\test\sub\*.java 5 | 6 | CoverageTools\JaCoCo\apache-ant-1.9.7\bin\ant -f .\JaCoCo_Ant.xml 7 | 8 | Remove-Item Java\bin -Force -Recurse 9 | Remove-Item jacoco.exec -------------------------------------------------------------------------------- /src/Testprojects/JaCoCo_Ant.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /src/Testprojects/Java/Project/test/AbstractClass.java: -------------------------------------------------------------------------------- 1 | package test; 2 | public abstract class AbstractClass { 3 | public AbstractClass() { 4 | System.out.println("AbstractClass constructed"); 5 | } 6 | 7 | public abstract void Method1() throws Exception; 8 | 9 | public abstract void Method2() throws Exception; 10 | } -------------------------------------------------------------------------------- /src/Testprojects/Java/Project/test/AbstractClass_SampleImpl1.java: -------------------------------------------------------------------------------- 1 | package test; 2 | public class AbstractClass_SampleImpl1 extends AbstractClass { 3 | public AbstractClass_SampleImpl1() { 4 | System.out.println("SampleImpl1 constructed"); 5 | } 6 | 7 | public void Method1() throws Exception { 8 | throw new Exception(); 9 | } 10 | 11 | public void Method2() throws Exception { 12 | throw new Exception(); 13 | } 14 | } -------------------------------------------------------------------------------- /src/Testprojects/Java/Project/test/AbstractClass_SampleImpl2.java: -------------------------------------------------------------------------------- 1 | package test; 2 | public class AbstractClass_SampleImpl2 extends AbstractClass { 3 | public AbstractClass_SampleImpl2() { 4 | System.out.println("SampleImpl2 constructed"); 5 | } 6 | 7 | public void Method1() throws Exception { 8 | throw new Exception(); 9 | } 10 | 11 | public void Method2() throws Exception { 12 | throw new Exception(); 13 | } 14 | } -------------------------------------------------------------------------------- /src/Testprojects/Java/Project/test/GenericClass.java: -------------------------------------------------------------------------------- 1 | package test; 2 | public class GenericClass { 3 | public void Process(T1 first, T2 second) { 4 | System.out.println("Process"); 5 | } 6 | } -------------------------------------------------------------------------------- /src/Testprojects/Java/Project/test/Program.java: -------------------------------------------------------------------------------- 1 | package test; 2 | public class Program { 3 | public static void main(String[] args) 4 | { 5 | new TestClass().SampleFunction(); 6 | 7 | new GenericClass().Process(null, null); 8 | 9 | new AbstractClass_SampleImpl1(); 10 | new AbstractClass_SampleImpl2(); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/Testprojects/Java/Project/test/TestClass.java: -------------------------------------------------------------------------------- 1 | package test; 2 | import java.util.*; 3 | 4 | class TestClass 5 | { 6 | public void SampleFunction() { 7 | String test = String.format( 8 | "%s %s", 9 | "Hello", 10 | "World"); 11 | 12 | System.out.println(test); 13 | int i = 10; 14 | 15 | if (i > 0 16 | || i > 1) { 17 | System.out.println(i + " is greater that 0"); 18 | } 19 | else { 20 | System.out.println(i + " is not greater that 0"); 21 | } 22 | 23 | // Not supported in Cobertura 24 | List myList = Arrays.asList("element1","element2","element3"); 25 | myList.forEach(element -> System.out.println(element)); 26 | } 27 | 28 | public class NestedClass { 29 | public void SampleFunction() { 30 | System.out.printf( 31 | "%s %s", 32 | "Hello", 33 | "World"); 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /src/Testprojects/Java/Project/test/sub/Sub.java: -------------------------------------------------------------------------------- 1 | package test.sub; 2 | 3 | public class Sub { 4 | public void SampleFunction() { 5 | System.out.printf( 6 | "%s %s", 7 | "Hello", 8 | "World"); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/Testprojects/NCover1.5.8.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | 3 | "CoverageTools\NCover\NCover.Console.exe" //reg //a Test "CSharp\Test\bin\Debug\Test.exe" //x "Ncover1.5.8_CSharp.xml" 4 | 5 | del Coverage.Log -------------------------------------------------------------------------------- /src/Testprojects/PartCover2.2.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | 3 | regsvr32.exe /s CoverageTools\PartCover2.2\PartCover.CorDriver.dll 4 | 5 | "CoverageTools\PartCover2.2\PartCover.exe" --target "CSharp\Test\bin\Debug\Test.exe" --include "[Test]*" --output Partcover2.2_CSharp.xml 6 | 7 | "CoverageTools\PartCover2.2\PartCover.exe" --target "FSharp\FSharpTest\bin\Debug\FSharpTest.exe" --output Partcover2.2_FSharp.xml 8 | 9 | regsvr32.exe /u /s CoverageTools\PartCover2.2\PartCover.CorDriver.dll -------------------------------------------------------------------------------- /src/Testprojects/PartCover2.3.35109.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | 3 | regsvr32.exe /s CoverageTools\PartCover2.3.35109\PartCover.CorDriver.dll 4 | 5 | "CoverageTools\PartCover2.3.35109\PartCover.exe" --target "CSharp\Test\bin\Debug\Test.exe" --include "[Test]*" --output Partcover2.3.35109_CSharp.xml 6 | 7 | "CoverageTools\PartCover2.3.35109\PartCover.exe" --target "FSharp\FSharpTest\bin\Debug\FSharpTest.exe" --output Partcover2.3.35109_FSharp.xml 8 | 9 | regsvr32.exe /u /s CoverageTools\PartCover2.3.35109\PartCover.CorDriver.dll -------------------------------------------------------------------------------- /src/Testprojects/PartCover2.3.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | 3 | regsvr32.exe /s CoverageTools\PartCover2.3\PartCover.CorDriver.dll 4 | 5 | "CoverageTools\PartCover2.3\PartCover.exe" --target "CSharp\Test\bin\Debug\Test.exe" --include "[Test]*" --output Partcover2.3_CSharp.xml 6 | 7 | regsvr32.exe /u /s CoverageTools\PartCover2.3\PartCover.CorDriver.dll -------------------------------------------------------------------------------- /src/Testprojects/coverlet.ps1: -------------------------------------------------------------------------------- 1 | dotnet test /p:CollectCoverage=true /p:CoverletOutputFormat=opencover /p:CoverletOutput=..\..\Reports\OpenCover_coverlet.xml CSharp\Project_DotNetCore\UnitTests\UnitTests.csproj 2 | dotnet test /p:CollectCoverage=true /p:CoverletOutputFormat=cobertura /p:CoverletOutput=..\..\Reports\Cobertura_coverlet.xml CSharp\Project_DotNetCore\UnitTests\UnitTests.csproj 3 | 4 | $pathToReplace = [regex]::Escape((Get-Location).Path + "\CSharp\Project_DotNetCore\Test") 5 | $replacement = "C:\temp" 6 | 7 | (gc "CSharp\Reports\OpenCover_coverlet.xml") | % { $_ -replace $pathToReplace, $replacement } | Out-File "CSharp\Reports\OpenCover_coverlet.xml" -Encoding UTF8 8 | 9 | (gc "CSharp\Reports\Cobertura_coverlet.xml") | % { $_ -replace $pathToReplace, $replacement } | Out-File "CSharp\Reports\Cobertura_coverlet.xml" -Encoding UTF8 -------------------------------------------------------------------------------- /src/Testprojects/dotnet-coverage.ps1: -------------------------------------------------------------------------------- 1 | dotnet tool install --global dotnet-coverage 2 | dotnet-coverage collect -f cobertura "dotnet test CSharp\Project_DotNetCore\UnitTests\UnitTests.csproj" -------------------------------------------------------------------------------- /src/Testprojects/dotnet-test.ps1: -------------------------------------------------------------------------------- 1 | dotnet test CSharp\Project_DotNetCore\UnitTests\UnitTests.csproj --collect "Code Coverage;Format=Cobertura" -------------------------------------------------------------------------------- /src/build.bat: -------------------------------------------------------------------------------- 1 | msbuild .\Testprojects\CSharp\Project\Test_CSharp.csproj /t:Restore /v:q 2 | msbuild .\build.proj /t:Restore /v:q 3 | msbuild .\build.proj /v:m --------------------------------------------------------------------------------