diff --git a/README.md b/README.md index 05128faf..b44708df 100644 --- a/README.md +++ b/README.md @@ -130,6 +130,7 @@ ThresholdForCrapScore When [crap score](https://testing.googleblog. StickyCoverageTable Set to true for coverage table to have a sticky thead. NamespacedClasses Set to false to show classes in report in short form. Affects grouping. +HideFullyCovered Set to true to hide classes, namespaces and assemblies that are fully covered. RunSettingsOnly Specify false for global and project options to be used for coverlet data collector configuration elements when not specified in runsettings CoverletCollectorDirectoryPath Specify path to directory containing coverlet collector files if you need functionality that the FCC version does not provide. diff --git a/SharedProject/Core/ReportGenerator/ReportGeneratorUtil.cs b/SharedProject/Core/ReportGenerator/ReportGeneratorUtil.cs index 6d218c2e..2aee3be5 100644 --- a/SharedProject/Core/ReportGenerator/ReportGeneratorUtil.cs +++ b/SharedProject/Core/ReportGenerator/ReportGeneratorUtil.cs @@ -765,6 +765,62 @@ private string HideGroupingCss() "; } + private string ObserveAndHideFullyCovered() + { + if (!appOptionsProvider.Get().HideFullyCovered) + { + return ""; + } + return @" +var targetNode = document;//document.querySelector('table.overview.table-fixed.stripped'); + +var config = { attributes: false, childList: true, subtree: true }; + +var callback = function(mutationsList, observer) { + var fullyCoveredTds = document.querySelectorAll('td.covered100.green') + + for (var i = 0; i < fullyCoveredTds.length; i++) + { + var td = fullyCoveredTds[i]; + var parent = td.parentNode; + if (parent.nodeName === 'TABLE') + { + parent = parent.parentNode; + if (parent.nodeName === 'COVERAGE-BAR') + { + parent = parent.parentNode; + if (parent.nodeName === 'TD' || parent.nodeName === 'TH') + { + parent = parent.parentNode; + var coverageBars = parent.querySelectorAll('td>coverage-bar'); + if(coverageBars.length == 0){ + coverageBars = parent.querySelectorAll('th>coverage-bar'); + } + var shouldHide = true; + // currently there is no option to hide branch coverage. + if(coverageBars.length === 2){ + var branchCoverageBar = coverageBars[1]; + // includes gray + var td = branchCoverageBar.querySelector('table>td.covered100'); + if(!td){ + shouldHide = false; + } + } + if(shouldHide){ + parent.style.setProperty('display', 'none'); + } + } + } + + } + } +}; + +var observer = new MutationObserver(callback); +observer.observe(targetNode, config); +"; + } + private string HackGroupingToAllowAll(int groupingLevel) { return $@" @@ -933,6 +989,7 @@ public string ProcessUnifiedHtml(string htmlForProcessing, string reportOutputFo