private static Benchmark[] MakeBenchmarks(string slnDir, EndToEndRoslynConfig config, string[] commits) { var benchmarks = new Benchmark[commits.Length]; for (int i = 0; i < commits.Length; i++) { benchmarks[i] = new ExternalProcessBenchmark( Path.Combine(slnDir, "Binaries/CodeAnalysisRepro"), "-noconfig @repro.rsp", BuildRoslyn(slnDir), config.GetJobs().Single(), MakeParameterInstances(commits[i])); } return(benchmarks); }
public static int Main(string[] args) { var roslynDir = Path.GetFullPath( Path.Combine(AppContext.BaseDirectory, "../../../../../../roslyn")); try { int i = 0; while (i < args.Length) { var arg = args[i++]; string ReadVar() => (i < args.Length) ? args[i++] : throw new InvalidDataException($"Expected value for \"{arg}\""); switch (arg) { case "--roslynDir": roslynDir = Path.GetFullPath(ReadVar()); break; default: throw new InvalidDataException("Unexpected option " + arg); } } } catch (InvalidDataException e) { Console.Error.WriteLine(e.Message); return(1); } var config = new EndToEndRoslynConfig( Path.Combine(roslynDir, "Binaries/Release/Exes/csc/netcoreapp2.0/csc.dll")); var benchmarks = MakeBenchmarks(roslynDir, config, new[] { "HEAD^", "HEAD" }); var summary = BenchmarkRunner.Run(benchmarks, config); return(0); }