public override int Execute([NotNull] CommandContext context, [NotNull] Settings settings) { var projectsToAnalyze = PathUtility.GetProjectPaths(settings.ProjectOrSolutionPath, out var entry); // Remove all projects that we want to skip. projectsToAnalyze.RemoveAll(p => { var projectName = Path.GetFileNameWithoutExtension(p); return(settings.Skip?.Contains(projectName, StringComparer.OrdinalIgnoreCase) ?? false); }); var targetFramework = settings.TargetFramework; var analyzerResults = new List <ProjectAnalyzerResult>(); var projectCache = new HashSet <Project>(new ProjectComparer()); _console.WriteLine(); return(_console.Status().Start($"Analyzing...", ctx => { ctx.Refresh(); _console.MarkupLine($"Analyzing [yellow]{Path.GetFileName(entry)}[/]"); foreach (var projectToAnalyze in projectsToAnalyze) { // Perform a design time build of the project. var buildResult = _builder.Build( projectToAnalyze, targetFramework, settings.Skip, projectCache); // Update the cache of built projects. projectCache.Add(buildResult.Project); foreach (var item in buildResult.Dependencies) { projectCache.Add(item); } // Analyze the project. var analyzeResult = _analyzer.Analyze(buildResult.Project); if (settings.Exclude?.Length > 0) { // Filter packages that should be excluded. analyzeResult = analyzeResult.Filter(settings.Exclude); } analyzerResults.Add(analyzeResult); } // Write the rport to the console _reporter.WriteToConsole(analyzerResults); // Return the correct exit code. return GetExitCode(settings, analyzerResults); })); }
public override int Execute(CommandContext context, Settings settings) { var projectsToAnalyze = PathUtility.GetProjectPaths(settings.ProjectOrSolutionPath, out var entry); // Remove all projects that we want to skip. projectsToAnalyze.RemoveAll(p => { var projectName = Path.GetFileNameWithoutExtension(p); return(settings.Skip?.Contains(projectName, StringComparer.OrdinalIgnoreCase) ?? false); }); _console.WriteLine(); _console.Write("Processing "); _console.ForegroundColor = ConsoleColor.Yellow; _console.Write(Path.GetFileName(entry)); _console.ResetColor(); _console.WriteLine("..."); var targetFramework = settings.TargetFramework; var analyzerResults = new List <ProjectAnalyzerResult>(); var projectCache = new HashSet <Project>(new ProjectComparer()); foreach (var projectToAnalyze in projectsToAnalyze) { // Perform a design time build of the project. var buildResult = _builder.Build( projectToAnalyze, targetFramework, settings.Skip, projectCache); // Update the cache of built projects. projectCache.Add(buildResult.Project); foreach (var item in buildResult.Dependencies) { projectCache.Add(item); } // Analyze the project. var analyzeResult = _analyzer.Analyze(buildResult.Project); if (settings.Exclude?.Length > 0) { // Filter packages that should be excluded. analyzeResult = analyzeResult.Filter(settings.Exclude); } analyzerResults.Add(analyzeResult); } _reporter.WriteToConsole(analyzerResults); return(GetExitCode(settings, analyzerResults)); }
public override int Execute(CommandContext context, Settings settings) { settings.ProjectPath = PathUtility.GetProjectPath(settings.ProjectPath); // Analyze the project. var project = _builder.Build(settings.ProjectPath, settings.TargetFramework); var result = _analyzer.Analyze(project); if (settings.Ignore?.Length > 0) { // Filter packages that should be excluded. result = result.Filter(settings.Ignore); } _reporter.WriteToConsole(result); return(GetExitCode(settings, result)); }