private static void Main(string[] args) { if (args == null) { return; } if (args.Length != 1) { return; } string filePath = args[0]; string content = File.ReadAllText(filePath, Encoding.UTF8); foreach (AnalyzerLogInfo info in LogParser.Parse(content) .Where(f => !f.FullName.StartsWith("Microsoft.CodeAnalysis", StringComparison.Ordinal)) .GroupBy(f => f.FullName) .Select(f => new AnalyzerLogInfo(f.Key, f.Sum(g => g.Elapsed), f.Sum(g => g.Percent) / f.Count())) .OrderByDescending(f => f.Elapsed)) { Console.WriteLine(info.Elapsed.ToString("n0", CultureInfo.InvariantCulture) + " " + info.FullName); } Console.WriteLine("DONE"); }
private static void Main(string[] args) { if (args?.Length != 1) { if (!Debugger.IsAttached) { return; } args = new string[] { @"..\..\..\..\..\..\tools\msbuild.log" }; } string filePath = args[0]; Console.WriteLine($"Reading file \"{filePath}\""); List <ProjectDiagnosticInfo> projectDiagnostics = LogParser.Parse(filePath).ToList(); IOrderedEnumerable <IGrouping <string, AnalyzerDiagnosticInfo> > groupedByRootNamespace = projectDiagnostics .SelectMany(f => f.AnalyzerDiagnostics) .Where(f => f.Elapsed > 0) .GroupBy(f => f.RootNamespace) .OrderBy(f => f.Key); foreach (IGrouping <string, AnalyzerDiagnosticInfo> grouping in groupedByRootNamespace) { Console.WriteLine(grouping.Key); foreach (AnalyzerDiagnosticInfo info in grouping .OrderBy(f => f.Elapsed)) { Console.WriteLine(info.Elapsed.ToString("n0", CultureInfo.InvariantCulture) + " " + info.Name); } Console.WriteLine(); } foreach ((string rootNamespace, int elapsed) in groupedByRootNamespace .Select(f => (rootNamespace: f.Key, elapsed: f.Sum(info => info.Elapsed))) .OrderBy(f => f.elapsed)) { Console.WriteLine($"{rootNamespace}: {elapsed.ToString("n0", CultureInfo.InvariantCulture)}"); } Console.WriteLine($"Total analyzer execution time: {projectDiagnostics.Sum(f => f.Total).ToString("n0", CultureInfo.InvariantCulture)}"); if (Debugger.IsAttached) { Console.WriteLine("Done..."); Console.ReadKey(); } }
private static void Main(string[] args) { if (args?.Length != 1) { if (!Debugger.IsAttached) { return; } args = new string[] { @"..\..\..\..\..\..\tools\msbuild.log" }; } string filePath = args[0]; Console.WriteLine($"Reading file \"{filePath}\""); List <ProjectDiagnosticInfo> projectDiagnostics = LogParser.Parse(filePath).ToList(); int total = projectDiagnostics.Sum(f => f.Total); int totalElapsed = 0; foreach (AnalyzerDiagnosticInfo info in projectDiagnostics .SelectMany(f => f.AnalyzerDiagnostics) .Where(f => f.FullName.StartsWith("Roslynator.", StringComparison.Ordinal) && f.Elapsed > 0) .GroupBy(f => f.FullName) .Select(f => new AnalyzerDiagnosticInfo(f.Key, f.Sum(g => g.Elapsed), f.Sum(g => g.Percent) / f.Count())) .OrderBy(f => f.Elapsed)) { Console.WriteLine(info.Elapsed.ToString("n0", CultureInfo.InvariantCulture) + " " + info.Name); totalElapsed += info.Elapsed; } Console.WriteLine(); Console.WriteLine($"Total analyzer execution time: {total.ToString("n0", CultureInfo.InvariantCulture)}"); Console.WriteLine($"Sum of analyzer times: {totalElapsed.ToString("n0", CultureInfo.InvariantCulture)}"); if (Debugger.IsAttached) { Console.WriteLine("Done..."); Console.ReadKey(); } }