From d93f64589348d471cd42d456ac302083f2920a9b Mon Sep 17 00:00:00 2001 From: Eddy Nakamura Date: Sun, 2 Aug 2020 06:42:02 -0300 Subject: [PATCH 1/3] Adding complexity to Cobertura Adding complexity to cobertura Revert "Adding complexity to Cobertura" This reverts commit de21ada18a20a32dcdf6bfb78c28736af42f307f. --- .../Builders/CoberturaReportBuilder.cs | 23 ++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/src/ReportGenerator.Core/Reporting/Builders/CoberturaReportBuilder.cs b/src/ReportGenerator.Core/Reporting/Builders/CoberturaReportBuilder.cs index 4d13bb13..fb848c4b 100644 --- a/src/ReportGenerator.Core/Reporting/Builders/CoberturaReportBuilder.cs +++ b/src/ReportGenerator.Core/Reporting/Builders/CoberturaReportBuilder.cs @@ -62,6 +62,7 @@ public void CreateClassReport(Class @class, IEnumerable fileAnalys foreach (var fileAnalysis in fileAnalyses) { + decimal? fileComplexity = null; var classElement = new XElement( "class", new XAttribute("name", @class.Name), @@ -95,6 +96,26 @@ public void CreateClassReport(Class @class, IEnumerable fileAnalys methodElement.Add(new XAttribute("branch-rate", methodBranchRate.ToString(CultureInfo.InvariantCulture))); methodElement.Add(new XAttribute("complexity", "NaN")); + var methodMetrics = file.MethodMetrics.FirstOrDefault(q => q.ShortName == codeElement.Name); + if (methodMetrics != null) + { + var complexityMetric = methodMetrics.Metrics.FirstOrDefault(m => m.Name == ReportResources.CyclomaticComplexity); + if (complexityMetric != null && complexityMetric.Value.HasValue) + { + if (!fileComplexity.HasValue) + { + fileComplexity = 0; + } + + fileComplexity += complexityMetric.Value.Value; + methodElement.Add(new XAttribute("complexity", complexityMetric.Value.Value.ToString(CultureInfo.InvariantCulture))); + } + } + else + { + methodElement.Add(new XAttribute("complexity", "NaN")); + } + methodsElement.Add(methodElement); } @@ -110,7 +131,7 @@ public void CreateClassReport(Class @class, IEnumerable fileAnalys classElement.Add(new XAttribute("line-rate", lineRate.ToString(CultureInfo.InvariantCulture))); classElement.Add(new XAttribute("branch-rate", branchRate.ToString(CultureInfo.InvariantCulture))); - classElement.Add(new XAttribute("complexity", "NaN")); + classElement.Add(new XAttribute("complexity", fileComplexity.HasValue ? fileComplexity.Value.ToString(CultureInfo.InvariantCulture) : "NaN")); classElement.Add(linesElement); From 4bb37aa0068db405b9277b178a059c53885c7895 Mon Sep 17 00:00:00 2001 From: Eddy Nakamura Date: Sun, 2 Aug 2020 06:59:11 -0300 Subject: [PATCH 2/3] Adding complexity to assembly/summary --- .../Builders/CoberturaReportBuilder.cs | 31 +++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) diff --git a/src/ReportGenerator.Core/Reporting/Builders/CoberturaReportBuilder.cs b/src/ReportGenerator.Core/Reporting/Builders/CoberturaReportBuilder.cs index fb848c4b..9bd359f0 100644 --- a/src/ReportGenerator.Core/Reporting/Builders/CoberturaReportBuilder.cs +++ b/src/ReportGenerator.Core/Reporting/Builders/CoberturaReportBuilder.cs @@ -145,8 +145,10 @@ public void CreateClassReport(Class @class, IEnumerable fileAnalys /// The summary result. public void CreateSummaryReport(SummaryResult summaryResult) { + decimal? summaryComplexity = null; foreach (var assembly in summaryResult.Assemblies) { + decimal? assemblyComplexity = null; if (this.packageElementsByName.TryGetValue(assembly.Name, out XElement packageElement)) { double packageLineRate = assembly.CoverableLines == 0 ? 1 : assembly.CoveredLines / (double)assembly.CoverableLines; @@ -154,7 +156,32 @@ public void CreateSummaryReport(SummaryResult summaryResult) packageElement.Add(new XAttribute("line-rate", packageLineRate.ToString(CultureInfo.InvariantCulture))); packageElement.Add(new XAttribute("branch-rate", packageBranchRate.ToString(CultureInfo.InvariantCulture))); - packageElement.Add(new XAttribute("complexity", "NaN")); + + foreach (var @class in assembly.Classes) + { + foreach (var file in @class.Files) + { + foreach (var methodMetric in file.MethodMetrics) + { + var metric = methodMetric.Metrics.FirstOrDefault(m => + m.Name == ReportResources.CyclomaticComplexity + && m.Value.HasValue); + if (metric != null) + { + if (!assemblyComplexity.HasValue) + { + assemblyComplexity = 0; + summaryComplexity = 0; + } + + assemblyComplexity += metric.Value.Value; + summaryComplexity += metric.Value.Value; + } + } + } + } + + packageElement.Add(new XAttribute("complexity", assemblyComplexity.HasValue ? assemblyComplexity.Value.ToString(CultureInfo.InvariantCulture) : "NaN")); } } @@ -169,7 +196,7 @@ public void CreateSummaryReport(SummaryResult summaryResult) rootElement.Add(new XAttribute("lines-valid", summaryResult.CoverableLines.ToString(CultureInfo.InvariantCulture))); rootElement.Add(new XAttribute("branches-covered", summaryResult.CoveredBranches.GetValueOrDefault().ToString(CultureInfo.InvariantCulture))); rootElement.Add(new XAttribute("branches-valid", summaryResult.TotalBranches.GetValueOrDefault().ToString(CultureInfo.InvariantCulture))); - rootElement.Add(new XAttribute("complexity", "NaN")); + rootElement.Add(new XAttribute("complexity", summaryComplexity.HasValue ? summaryComplexity.Value.ToString(CultureInfo.InvariantCulture) : "NaN")); rootElement.Add(new XAttribute("version", 0)); rootElement.Add(new XAttribute("timestamp", ((long)(DateTime.Now - new DateTime(1970, 1, 1)).TotalSeconds).ToString(CultureInfo.InvariantCulture))); From 246b6e2dc022705bb3347c3344cf772483fd5b57 Mon Sep 17 00:00:00 2001 From: Eddy Nakamura Date: Sun, 2 Aug 2020 07:10:44 -0300 Subject: [PATCH 3/3] removing duplicated tag; initializing summaryComplexity once --- .../Reporting/Builders/CoberturaReportBuilder.cs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/ReportGenerator.Core/Reporting/Builders/CoberturaReportBuilder.cs b/src/ReportGenerator.Core/Reporting/Builders/CoberturaReportBuilder.cs index 9bd359f0..b9940de4 100644 --- a/src/ReportGenerator.Core/Reporting/Builders/CoberturaReportBuilder.cs +++ b/src/ReportGenerator.Core/Reporting/Builders/CoberturaReportBuilder.cs @@ -94,7 +94,6 @@ public void CreateClassReport(Class @class, IEnumerable fileAnalys methodElement.Add(new XAttribute("line-rate", methodLineRate.ToString(CultureInfo.InvariantCulture))); methodElement.Add(new XAttribute("branch-rate", methodBranchRate.ToString(CultureInfo.InvariantCulture))); - methodElement.Add(new XAttribute("complexity", "NaN")); var methodMetrics = file.MethodMetrics.FirstOrDefault(q => q.ShortName == codeElement.Name); if (methodMetrics != null) @@ -171,6 +170,10 @@ public void CreateSummaryReport(SummaryResult summaryResult) if (!assemblyComplexity.HasValue) { assemblyComplexity = 0; + } + + if (!summaryComplexity.HasValue) + { summaryComplexity = 0; }