Skip to content

Commit ea18ace

Browse files
committed
#704 Improved handling of file filters (unified behavior for all report formats)
1 parent 9cc5ad8 commit ea18ace

14 files changed

+112
-56
lines changed

src/ReportGenerator.Core/Reporting/Builders/CloverReportBuilder.cs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -246,7 +246,11 @@ public void CreateSummaryReport(SummaryResult summaryResult)
246246
int totalProjectNcloc = 0;
247247
int totalProjectFiles = 0;
248248

249-
foreach (var assembly in summaryResult.Assemblies)
249+
var assembliesWithClasses = summaryResult.Assemblies
250+
.Where(a => a.Classes.Any())
251+
.ToArray();
252+
253+
foreach (var assembly in assembliesWithClasses)
250254
{
251255
if (this.packageElementsByName.TryGetValue(assembly.Name, out XElement packageElement))
252256
{
@@ -356,7 +360,7 @@ public void CreateSummaryReport(SummaryResult summaryResult)
356360
new XAttribute("loc", totalProjectLoc.ToString(CultureInfo.InvariantCulture)),
357361
new XAttribute("ncloc", totalProjectNcloc.ToString(CultureInfo.InvariantCulture)),
358362
new XAttribute("files", totalProjectFiles.ToString(CultureInfo.InvariantCulture)),
359-
new XAttribute("packages", summaryResult.Assemblies.Count.ToString(CultureInfo.InvariantCulture))));
363+
new XAttribute("packages", assembliesWithClasses.Length.ToString(CultureInfo.InvariantCulture))));
360364

361365
var testProjectElement = new XElement(
362366
"testproject",

src/ReportGenerator.Core/Reporting/Builders/CoberturaReportBuilder.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,11 @@ public void CreateSummaryReport(SummaryResult summaryResult)
150150
{
151151
decimal? summaryComplexity = null;
152152

153-
foreach (var assembly in summaryResult.Assemblies)
153+
var assembliesWithClasses = summaryResult.Assemblies
154+
.Where(a => a.Classes.Any())
155+
.ToArray();
156+
157+
foreach (var assembly in assembliesWithClasses)
154158
{
155159
decimal? assemblyComplexity = null;
156160
if (this.packageElementsByName.TryGetValue(assembly.Name, out XElement packageElement))

src/ReportGenerator.Core/Reporting/Builders/CodeClimateReportBuilder.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
using System.Collections.Generic;
33
using System.Globalization;
44
using System.IO;
5+
using System.Linq;
56
using System.Text;
67
using System.Text.Json;
78
using Palmmedia.ReportGenerator.Core.Common;
@@ -120,7 +121,11 @@ public void CreateSummaryReport(SummaryResult summaryResult)
120121

121122
reportTextWriter.WriteLine(" \"source_files\": [");
122123

123-
foreach (var assembly in summaryResult.Assemblies)
124+
var assembliesWithClasses = summaryResult.Assemblies
125+
.Where(a => a.Classes.Any())
126+
.ToArray();
127+
128+
foreach (var assembly in assembliesWithClasses)
124129
{
125130
foreach (var clazz in assembly.Classes)
126131
{

src/ReportGenerator.Core/Reporting/Builders/CsvSummaryReportBuilder.cs

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
using System.Globalization;
44
using System.IO;
55
using System.Linq;
6-
using System.Text;
76
using Palmmedia.ReportGenerator.Core.Common;
87
using Palmmedia.ReportGenerator.Core.Logging;
98
using Palmmedia.ReportGenerator.Core.Parser.Analysis;
@@ -83,6 +82,10 @@ public void CreateSummaryReport(SummaryResult summaryResult)
8382

8483
using (var reportTextWriter = File.CreateText(targetPath))
8584
{
85+
var assembliesWithClasses = summaryResult.Assemblies
86+
.Where(a => a.Classes.Any())
87+
.ToArray();
88+
8689
reportTextWriter.WriteLine(ReportResources.Summary);
8790
reportTextWriter.WriteLine(
8891
"{0};{1}",
@@ -95,15 +98,15 @@ public void CreateSummaryReport(SummaryResult summaryResult)
9598
reportTextWriter.WriteLine(
9699
"{0};{1}",
97100
ReportResources.Assemblies2,
98-
summaryResult.Assemblies.Count().ToString(CultureInfo.InvariantCulture));
101+
assembliesWithClasses.Count().ToString(CultureInfo.InvariantCulture));
99102
reportTextWriter.WriteLine(
100103
"{0};{1}",
101104
ReportResources.Classes,
102-
summaryResult.Assemblies.SelectMany(a => a.Classes).Count().ToString(CultureInfo.InvariantCulture));
105+
assembliesWithClasses.SelectMany(a => a.Classes).Count().ToString(CultureInfo.InvariantCulture));
103106
reportTextWriter.WriteLine(
104107
"{0};{1}",
105108
ReportResources.Files2,
106-
summaryResult.Assemblies.SelectMany(a => a.Classes).SelectMany(a => a.Files).Distinct().Count().ToString(CultureInfo.InvariantCulture));
109+
assembliesWithClasses.SelectMany(a => a.Classes).SelectMany(a => a.Files).Distinct().Count().ToString(CultureInfo.InvariantCulture));
107110
reportTextWriter.WriteLine(
108111
"{0};{1}",
109112
ReportResources.Coverage2,
@@ -125,7 +128,7 @@ public void CreateSummaryReport(SummaryResult summaryResult)
125128
ReportResources.TotalLines,
126129
summaryResult.TotalLines.GetValueOrDefault().ToString(CultureInfo.InvariantCulture));
127130

128-
foreach (var assembly in summaryResult.Assemblies)
131+
foreach (var assembly in assembliesWithClasses)
129132
{
130133
reportTextWriter.WriteLine();
131134
reportTextWriter.WriteLine(

src/ReportGenerator.Core/Reporting/Builders/HtmlReportBuilderBase.cs

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -238,12 +238,16 @@ public virtual void CreateSummaryReport(IHtmlRenderer reportRenderer, SummaryRes
238238
reportRenderer.BeginSummaryReport(this.CreateTargetDirectory(), null, title);
239239
reportRenderer.HeaderWithGithubLinks(title);
240240

241+
var assembliesWithClasses = summaryResult.Assemblies
242+
.Where(a => a.Classes.Any())
243+
.ToArray();
244+
241245
var infoCardItems = new List<CardLineItem>()
242246
{
243247
new CardLineItem(ReportResources.Parser, summaryResult.UsedParser, null, CardLineItemAlignment.Left),
244-
new CardLineItem(ReportResources.Assemblies2, summaryResult.Assemblies.Count().ToString(CultureInfo.InvariantCulture), null),
245-
new CardLineItem(ReportResources.Classes, summaryResult.Assemblies.SelectMany(a => a.Classes).Count().ToString(CultureInfo.InvariantCulture), null),
246-
new CardLineItem(ReportResources.Files2, summaryResult.Assemblies.SelectMany(a => a.Classes).SelectMany(a => a.Files).Distinct().Count().ToString(CultureInfo.InvariantCulture), null)
248+
new CardLineItem(ReportResources.Assemblies2, assembliesWithClasses.Count().ToString(CultureInfo.InvariantCulture), null),
249+
new CardLineItem(ReportResources.Classes, assembliesWithClasses.SelectMany(a => a.Classes).Count().ToString(CultureInfo.InvariantCulture), null),
250+
new CardLineItem(ReportResources.Files2, assembliesWithClasses.SelectMany(a => a.Classes).SelectMany(a => a.Files).Distinct().Count().ToString(CultureInfo.InvariantCulture), null)
247251
};
248252

249253
if (this.ReportContext.ReportConfiguration.Tag != null)
@@ -356,12 +360,12 @@ public virtual void CreateSummaryReport(IHtmlRenderer reportRenderer, SummaryRes
356360

357361
reportRenderer.Header(ReportResources.Coverage3);
358362

359-
if (summaryResult.Assemblies.Any())
363+
if (assembliesWithClasses.Any())
360364
{
361365
reportRenderer.BeginSummaryTable();
362366
reportRenderer.BeginSummaryTable(summaryResult.SupportsBranchCoverage, proVersion);
363367

364-
foreach (var assembly in summaryResult.Assemblies)
368+
foreach (var assembly in assembliesWithClasses)
365369
{
366370
reportRenderer.SummaryAssembly(assembly, summaryResult.SupportsBranchCoverage, proVersion);
367371

@@ -384,7 +388,7 @@ public virtual void CreateSummaryReport(IHtmlRenderer reportRenderer, SummaryRes
384388
}
385389

386390
reportRenderer.CustomSummary(
387-
summaryResult.Assemblies,
391+
assembliesWithClasses,
388392
this.ReportContext.RiskHotspotAnalysisResult.RiskHotspots,
389393
summaryResult.SupportsBranchCoverage,
390394
proVersion);

src/ReportGenerator.Core/Reporting/Builders/JsonSummaryReportBuilder.cs

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -79,13 +79,17 @@ public void CreateSummaryReport(SummaryResult summaryResult)
7979

8080
using (var reportTextWriter = new StreamWriter(new FileStream(targetPath, FileMode.Create), new UTF8Encoding(encoderShouldEmitUTF8Identifier: false)))
8181
{
82+
var assembliesWithClasses = summaryResult.Assemblies
83+
.Where(a => a.Classes.Any())
84+
.ToArray();
85+
8286
reportTextWriter.WriteLine("{");
8387
reportTextWriter.WriteLine(" \"summary\": {");
8488
reportTextWriter.WriteLine($" \"generatedon\": \"{DateTime.Now.ToUniversalTime().ToString("s")}Z\",");
8589
reportTextWriter.WriteLine($" \"parser\": \"{summaryResult.UsedParser}\",");
86-
reportTextWriter.WriteLine($" \"assemblies\": {summaryResult.Assemblies.Count().ToString(CultureInfo.InvariantCulture)},");
87-
reportTextWriter.WriteLine($" \"classes\": {summaryResult.Assemblies.SelectMany(a => a.Classes).Count().ToString(CultureInfo.InvariantCulture)},");
88-
reportTextWriter.WriteLine($" \"files\": {summaryResult.Assemblies.SelectMany(a => a.Classes).SelectMany(a => a.Files).Distinct().Count().ToString(CultureInfo.InvariantCulture)},");
90+
reportTextWriter.WriteLine($" \"assemblies\": {assembliesWithClasses.Count().ToString(CultureInfo.InvariantCulture)},");
91+
reportTextWriter.WriteLine($" \"classes\": {assembliesWithClasses.SelectMany(a => a.Classes).Count().ToString(CultureInfo.InvariantCulture)},");
92+
reportTextWriter.WriteLine($" \"files\": {assembliesWithClasses.SelectMany(a => a.Classes).SelectMany(a => a.Files).Distinct().Count().ToString(CultureInfo.InvariantCulture)},");
8993
reportTextWriter.WriteLine($" \"coveredlines\": {summaryResult.CoveredLines.ToString(CultureInfo.InvariantCulture)},");
9094
reportTextWriter.WriteLine($" \"uncoveredlines\": {(summaryResult.CoverableLines - summaryResult.CoveredLines).ToString(CultureInfo.InvariantCulture)},");
9195
reportTextWriter.WriteLine($" \"coverablelines\": {summaryResult.CoverableLines.ToString(CultureInfo.InvariantCulture)},");
@@ -161,7 +165,7 @@ public void CreateSummaryReport(SummaryResult summaryResult)
161165

162166
int assemblyCounter = 0;
163167

164-
foreach (var assembly in summaryResult.Assemblies)
168+
foreach (var assembly in assembliesWithClasses)
165169
{
166170
if (assemblyCounter > 0)
167171
{

src/ReportGenerator.Core/Reporting/Builders/LCovSummaryReportBuilder.cs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
using System.Collections.Generic;
33
using System.Globalization;
44
using System.IO;
5-
using System.Text;
5+
using System.Linq;
66
using Palmmedia.ReportGenerator.Core.Common;
77
using Palmmedia.ReportGenerator.Core.Logging;
88
using Palmmedia.ReportGenerator.Core.Parser.Analysis;
@@ -85,7 +85,11 @@ public void CreateSummaryReport(SummaryResult summaryResult)
8585
reportTextWriter.WriteLine("TN:");
8686
long branchCounter = 0;
8787

88-
foreach (var assembly in summaryResult.Assemblies)
88+
var assembliesWithClasses = summaryResult.Assemblies
89+
.Where(a => a.Classes.Any())
90+
.ToArray();
91+
92+
foreach (var assembly in assembliesWithClasses)
8993
{
9094
foreach (var @class in assembly.Classes)
9195
{

src/ReportGenerator.Core/Reporting/Builders/LatexReportBuilderBase.cs

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -191,10 +191,14 @@ public virtual void CreateSummaryReport(ILatexRenderer reportRenderer, SummaryRe
191191
reportRenderer.KeyValueRow(ReportResources.CoverageDate, summaryResult.CoverageDate());
192192
}
193193

194+
var assembliesWithClasses = summaryResult.Assemblies
195+
.Where(a => a.Classes.Any())
196+
.ToArray();
197+
194198
reportRenderer.KeyValueRow(ReportResources.Parser, summaryResult.UsedParser);
195-
reportRenderer.KeyValueRow(ReportResources.Assemblies2, summaryResult.Assemblies.Count().ToString(CultureInfo.InvariantCulture));
196-
reportRenderer.KeyValueRow(ReportResources.Classes, summaryResult.Assemblies.SelectMany(a => a.Classes).Count().ToString(CultureInfo.InvariantCulture));
197-
reportRenderer.KeyValueRow(ReportResources.Files2, summaryResult.Assemblies.SelectMany(a => a.Classes).SelectMany(a => a.Files).Distinct().Count().ToString(CultureInfo.InvariantCulture));
199+
reportRenderer.KeyValueRow(ReportResources.Assemblies2, assembliesWithClasses.Count().ToString(CultureInfo.InvariantCulture));
200+
reportRenderer.KeyValueRow(ReportResources.Classes, assembliesWithClasses.SelectMany(a => a.Classes).Count().ToString(CultureInfo.InvariantCulture));
201+
reportRenderer.KeyValueRow(ReportResources.Files2, assembliesWithClasses.SelectMany(a => a.Classes).SelectMany(a => a.Files).Distinct().Count().ToString(CultureInfo.InvariantCulture));
198202
reportRenderer.KeyValueRow(ReportResources.CoveredLines, summaryResult.CoveredLines.ToString(CultureInfo.InvariantCulture));
199203
reportRenderer.KeyValueRow(ReportResources.UncoveredLines, (summaryResult.CoverableLines - summaryResult.CoveredLines).ToString(CultureInfo.InvariantCulture));
200204
reportRenderer.KeyValueRow(ReportResources.CoverableLines, summaryResult.CoverableLines.ToString(CultureInfo.InvariantCulture));
@@ -252,11 +256,11 @@ public virtual void CreateSummaryReport(ILatexRenderer reportRenderer, SummaryRe
252256

253257
reportRenderer.Header(ReportResources.Coverage3);
254258

255-
if (summaryResult.Assemblies.Any())
259+
if (assembliesWithClasses.Any())
256260
{
257261
reportRenderer.BeginSummaryTable(summaryResult.SupportsBranchCoverage, true);
258262

259-
foreach (var assembly in summaryResult.Assemblies)
263+
foreach (var assembly in assembliesWithClasses)
260264
{
261265
reportRenderer.SummaryAssembly(assembly, summaryResult.SupportsBranchCoverage, true);
262266

src/ReportGenerator.Core/Reporting/Builders/MarkdownAssembliesSummaryReportBuilder.cs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,11 @@ public void CreateSummaryReport(SummaryResult summaryResult)
111111
reportTextWriter.WriteLine();
112112
reportTextWriter.WriteLine();
113113

114-
if (summaryResult.Assemblies.Any())
114+
var assembliesWithClasses = summaryResult.Assemblies
115+
.Where(a => a.Classes.Any())
116+
.ToArray();
117+
118+
if (assembliesWithClasses.Any())
115119
{
116120
reportTextWriter.Write(
117121
"|**{0}**|**{1}**|",
@@ -148,7 +152,7 @@ public void CreateSummaryReport(SummaryResult summaryResult)
148152

149153
reportTextWriter.WriteLine();
150154

151-
foreach (var assembly in summaryResult.Assemblies)
155+
foreach (var assembly in assembliesWithClasses)
152156
{
153157
reportTextWriter.Write("|**{0}**", assembly.Name);
154158
reportTextWriter.Write("|**{0}**", assembly.CoverageQuota.HasValue ? assembly.CoverageQuota.Value.ToString(CultureInfo.InvariantCulture) + "%" : string.Empty);

src/ReportGenerator.Core/Reporting/Builders/MarkdownSummaryGithubReportBuilder.cs

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,10 @@ public void CreateSummaryReport(SummaryResult summaryResult)
8686

8787
using (var reportTextWriter = File.CreateText(targetPath))
8888
{
89+
var assembliesWithClasses = summaryResult.Assemblies
90+
.Where(a => a.Classes.Any())
91+
.ToArray();
92+
8993
if (this.ReportContext.ReportConfiguration.Title != null)
9094
{
9195
reportTextWriter.WriteLine("# {0} - {1}", ReportResources.Summary, this.ReportContext.ReportConfiguration.Title);
@@ -111,9 +115,9 @@ public void CreateSummaryReport(SummaryResult summaryResult)
111115
}
112116

113117
reportTextWriter.WriteLine("| {0} | {1} |", ReportResources.Parser, summaryResult.UsedParser);
114-
reportTextWriter.WriteLine("| {0} | {1} |", ReportResources.Assemblies2, summaryResult.Assemblies.Count().ToString(CultureInfo.InvariantCulture));
115-
reportTextWriter.WriteLine("| {0} | {1} |", ReportResources.Classes, summaryResult.Assemblies.SelectMany(a => a.Classes).Count().ToString(CultureInfo.InvariantCulture));
116-
reportTextWriter.WriteLine("| {0} | {1} |", ReportResources.Files2, summaryResult.Assemblies.SelectMany(a => a.Classes).SelectMany(a => a.Files).Distinct().Count().ToString(CultureInfo.InvariantCulture));
118+
reportTextWriter.WriteLine("| {0} | {1} |", ReportResources.Assemblies2, assembliesWithClasses.Count().ToString(CultureInfo.InvariantCulture));
119+
reportTextWriter.WriteLine("| {0} | {1} |", ReportResources.Classes, assembliesWithClasses.SelectMany(a => a.Classes).Count().ToString(CultureInfo.InvariantCulture));
120+
reportTextWriter.WriteLine("| {0} | {1} |", ReportResources.Files2, assembliesWithClasses.SelectMany(a => a.Classes).SelectMany(a => a.Files).Distinct().Count().ToString(CultureInfo.InvariantCulture));
117121
reportTextWriter.WriteLine("| **{0}** | {1} |", ReportResources.Coverage2, summaryResult.CoverageQuota.HasValue ? $"{summaryResult.CoverageQuota.Value.ToString(CultureInfo.InvariantCulture)}% ({summaryResult.CoveredLines.ToString(CultureInfo.InvariantCulture)} {ReportResources.Of} {summaryResult.CoverableLines.ToString(CultureInfo.InvariantCulture)})" : string.Empty);
118122
reportTextWriter.WriteLine("| {0} | {1} |", ReportResources.CoveredLines, summaryResult.CoveredLines.ToString(CultureInfo.InvariantCulture));
119123
reportTextWriter.WriteLine("| {0} | {1} |", ReportResources.UncoveredLines, (summaryResult.CoverableLines - summaryResult.CoveredLines).ToString(CultureInfo.InvariantCulture));
@@ -158,9 +162,9 @@ public void CreateSummaryReport(SummaryResult summaryResult)
158162
reportTextWriter.WriteLine();
159163
reportTextWriter.WriteLine("## {0}", ReportResources.Coverage3);
160164

161-
if (summaryResult.Assemblies.Any())
165+
if (assembliesWithClasses.Any())
162166
{
163-
foreach (var assembly in summaryResult.Assemblies)
167+
foreach (var assembly in assembliesWithClasses)
164168
{
165169
reportTextWriter.WriteLine(
166170
"<details><summary>{0} - {1}</summary>",

0 commit comments

Comments
 (0)