Beispiel #1
0
 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();
            }
        }