예제 #1
0
        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");
        }
예제 #2
0
        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();
            }
        }
예제 #3
0
        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();
            }
        }