public GraphAnalyzer(ILogger logger, IProjectAnalyzer projectAnalyzer, IResultsReporter resultsReporter, bool failFast) { _logger = logger ?? throw new ArgumentNullException(nameof(logger)); _projectAnalyzer = projectAnalyzer ?? throw new ArgumentNullException(nameof(projectAnalyzer)); _resultsReporter = resultsReporter ?? throw new ArgumentNullException(nameof(resultsReporter)); _failFast = failFast; }
internal bool Run() { WaitForDebugger(); ILogger logger = new ConsoleLogger(_options.Verbose); OutputHeader(logger); DumpEnvironmentVariables(logger); IResultsReporter resultsReporter = null; try { logger.Log( $"Registered MSBuild from '{SetUpMsBuildAssemblyResolution(logger, _options.MsBuildPath)}'.\r\n"); resultsReporter = new ResultsReporter(_options.OutputReportFile); resultsReporter.Initialize(); GraphAnalyzer graphAnalyzer = new GraphAnalyzer( logger, new ProjectAnalyzer( logger, new DesignTimeBuildRunner( logger, GetAdditionalMsBuildProperties(logger, _options.AdditionalMsBuildProperties), alwaysLogBuildLog: _options.AlwaysDumpBuildLogOnVerbose), new BuildCheckProvider(), _options.Verbose), resultsReporter, _options.FailOnFirstError); return(graphAnalyzer.AnalyzeGraph(_options.InputProjectFile)); } catch (Exception ex) { logger.Log(ex.ToString()); throw; } finally { resultsReporter?.TearDown(); } }