Skip to content

Commit f66b473

Browse files
Speedup projects metric calculation
1 parent ce35a0b commit f66b473

File tree

1 file changed

+9
-20
lines changed

1 file changed

+9
-20
lines changed

MetricsExtractor/Program.cs

Lines changed: 9 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
using ArchiMetrics.Common.Metrics;
1212
using MetricsExtractor.Custom;
1313
using MetricsExtractor.ReportTemplate;
14-
using Microsoft.CodeAnalysis;
1514
using Microsoft.CodeAnalysis.Options;
1615

1716
namespace MetricsExtractor
@@ -33,6 +32,7 @@ static void Main(string[] args)
3332

3433
var runCodeMetrics = RunCodeMetrics(metricConfiguration.Solution, metricConfiguration.IgnoredProjects);
3534
runCodeMetrics.Wait();
35+
Console.WriteLine("All projects measure, creating report");
3636
var ignoredNamespaces = metricConfiguration.IgnoredNamespaces ?? Enumerable.Empty<string>();
3737
var namespaceMetrics = runCodeMetrics.Result.Where(nm => !ignoredNamespaces.Contains(nm.Name)).ToList();
3838

@@ -62,7 +62,7 @@ private static string GenerateReport(EstadoDoProjeto resultadoGeral, string solu
6262
var reportTemplateFactory = new ReportTemplateFactory();
6363
var report = reportTemplateFactory.GetReport(resultadoGeral);
6464
var list = new[] { "*.css", "*.js" }.SelectMany(ext => Directory.GetFiles(Path.Combine(ApplicationPath, "ReportTemplate"), ext)).ToList();
65-
65+
6666

6767
Directory.CreateDirectory(reportDirectory);
6868
using (var zipArchive = new ZipArchive(File.OpenWrite(reportPath), ZipArchiveMode.Create))
@@ -140,26 +140,15 @@ private static async Task<IEnumerable<INamespaceMetric>> RunCodeMetrics(string s
140140

141141
Console.WriteLine("Loading metrics, wait it may take a while.");
142142

143-
var tasks = projects.Select(async project =>
143+
var metrics = new List<IEnumerable<INamespaceMetric>>();
144+
var metricsCalculator = new CodeMetricsCalculator();
145+
foreach (var project in projects)
144146
{
145-
var metrics = new List<INamespaceMetric>();
146-
using (new TimerMeasure(string.Format("Loading metrics from project {0}", project.Name), string.Format("{0} metrics loaded", project.Name)))
147-
{
148-
var namespaceMetrics = await CreateTask(project, solution).ConfigureAwait(false);
149-
metrics.AddRange(namespaceMetrics);
150-
}
151-
return metrics;
152-
});
153-
154-
var nms = await Task.WhenAll(tasks).ConfigureAwait(false);
155-
156-
return nms.SelectMany(nm => nm);
157-
}
147+
var calculate = await metricsCalculator.Calculate(project, solution);
148+
metrics.Add(calculate);
149+
}
158150

159-
private static Task<IEnumerable<INamespaceMetric>> CreateTask(Project p, Solution solution)
160-
{
161-
var metricsCalculator = new CodeMetricsCalculator();
162-
return metricsCalculator.Calculate(p, solution);
151+
return metrics.SelectMany(nm => nm);
163152
}
164153

165154
private static IEnumerable<TypeMetricWithNamespace> CreateClassesRank(List<TypeMetricWithNamespace> types)

0 commit comments

Comments
 (0)