public override async Task <CommandResult> ExecuteAsync(ProjectOrSolution projectOrSolution, CancellationToken cancellationToken = default) { AssemblyResolver.Register(); var codeAnalyzerOptions = new CodeAnalyzerOptions( ignoreAnalyzerReferences: Options.IgnoreAnalyzerReferences, ignoreCompilerDiagnostics: Options.IgnoreCompilerDiagnostics, reportNotConfigurable: Options.ReportNotConfigurable, reportSuppressedDiagnostics: Options.ReportSuppressedDiagnostics, logAnalyzerExecutionTime: Options.ExecutionTime, severityLevel: SeverityLevel, supportedDiagnosticIds: Options.SupportedDiagnostics, ignoredDiagnosticIds: Options.IgnoredDiagnostics, projectNames: Options.Projects, ignoredProjectNames: Options.IgnoredProjects, language: Language); IEnumerable <string> analyzerAssemblies = Options.AnalyzerAssemblies; if (Options.UseRoslynatorAnalyzers) { analyzerAssemblies = analyzerAssemblies.Concat(RoslynatorAnalyzersAssemblies); } CultureInfo culture = (Options.Culture != null) ? CultureInfo.GetCultureInfo(Options.Culture) : null; var codeAnalyzer = new CodeAnalyzer( analyzerAssemblies: AnalyzerAssemblyLoader.LoadFiles(analyzerAssemblies, loadFixers: false), formatProvider: culture, options: codeAnalyzerOptions); if (projectOrSolution.IsProject) { Project project = projectOrSolution.AsProject(); WriteLine($"Analyze '{project.Name}'", ConsoleColor.Cyan, Verbosity.Minimal); ProjectAnalysisResult result = await codeAnalyzer.AnalyzeProjectAsync(project, cancellationToken); if (Options.Output != null && result.Diagnostics.Any()) { DiagnosticXmlSerializer.Serialize(result, project, Options.Output, culture); } } else { Solution solution = projectOrSolution.AsSolution(); ImmutableArray <ProjectAnalysisResult> results = await codeAnalyzer.AnalyzeSolutionAsync(solution, cancellationToken); if (Options.Output != null && results.Any(f => f.Diagnostics.Any())) { DiagnosticXmlSerializer.Serialize(results, solution, Options.Output, culture); } } return(CommandResult.Success); }
public override async Task <CommandResult> ExecuteAsync(ProjectOrSolution projectOrSolution, CancellationToken cancellationToken = default) { ImmutableArray <string> supportedDiagnosticIds = Options .GetSupportedDiagnostics() .Select(f => f.Id) .ToImmutableArray(); if (supportedDiagnosticIds.Any()) { var codeFixerOptions = new CodeFixerOptions( severityLevel: DiagnosticSeverity.Hidden, ignoreCompilerErrors: true, ignoreAnalyzerReferences: true, supportedDiagnosticIds: supportedDiagnosticIds, projectNames: Options.Projects, ignoredProjectNames: Options.IgnoredProjects, language: Language, batchSize: 1000, format: true); CultureInfo culture = (Options.Culture != null) ? CultureInfo.GetCultureInfo(Options.Culture) : null; return(await FixCommand.FixAsync( projectOrSolution, AnalyzerAssemblyLoader.LoadFiles(FixCommand.RoslynatorAnalyzersAssemblies), codeFixerOptions, culture, cancellationToken)); } else if (projectOrSolution.IsProject) { Project project = projectOrSolution.AsProject(); var options = new CodeFormatterOptions(includeGeneratedCode: Options.IncludeGeneratedCode); await FormatProjectAsync(project, options, cancellationToken); } else { Solution solution = projectOrSolution.AsSolution(); var options = new CodeFormatterOptions(includeGeneratedCode: Options.IncludeGeneratedCode); await FormatSolutionAsync(solution, options, cancellationToken); } return(CommandResult.Success); }
internal static async Task <CommandResult> FixAsync( ProjectOrSolution projectOrSolution, IEnumerable <string> analyzerAssemblies, CodeFixerOptions codeFixerOptions, IFormatProvider formatProvider = null, CancellationToken cancellationToken = default) { if (projectOrSolution.IsProject) { Project project = projectOrSolution.AsProject(); Solution solution = project.Solution; CodeFixer codeFixer = GetCodeFixer(solution); WriteLine($"Fix '{project.Name}'", ConsoleColor.Cyan, Verbosity.Minimal); await codeFixer.FixProjectAsync(project, cancellationToken); } else { Solution solution = projectOrSolution.AsSolution(); CodeFixer codeFixer = GetCodeFixer(solution); await codeFixer.FixSolutionAsync(cancellationToken); } return(CommandResult.Success); CodeFixer GetCodeFixer(Solution solution) { return(new CodeFixer( solution, analyzerAssemblies: AnalyzerAssemblyLoader.LoadFiles(analyzerAssemblies), formatProvider: formatProvider, options: codeFixerOptions)); } }
public override async Task <CommandResult> ExecuteAsync(ProjectOrSolution projectOrSolution, CancellationToken cancellationToken = default) { AssemblyResolver.Register(); var codeFixerOptions = new CodeFixerOptions( severityLevel: SeverityLevel, ignoreCompilerErrors: Options.IgnoreCompilerErrors, ignoreAnalyzerReferences: Options.IgnoreAnalyzerReferences, supportedDiagnosticIds: Options.SupportedDiagnostics, ignoredDiagnosticIds: Options.IgnoredDiagnostics, ignoredCompilerDiagnosticIds: Options.IgnoredCompilerDiagnostics, projectNames: Options.Projects, ignoredProjectNames: Options.IgnoredProjects, diagnosticIdsFixableOneByOne: Options.DiagnosticsFixableOneByOne, diagnosticFixMap: DiagnosticFixMap, diagnosticFixerMap: DiagnosticFixerMap, fileBanner: Options.FileBanner, language: Language, maxIterations: Options.MaxIterations, batchSize: Options.BatchSize, format: Options.Format); IEnumerable <AnalyzerAssembly> analyzerAssemblies = Options.AnalyzerAssemblies .SelectMany(path => AnalyzerAssemblyLoader.LoadFrom(path).Select(info => info.AnalyzerAssembly)); if (Options.UseRoslynatorAnalyzers) { analyzerAssemblies = analyzerAssemblies.Concat(AnalyzerAssemblyLoader.LoadFiles(RoslynatorAnalyzersAssemblies)); } if (Options.UseRoslynatorCodeFixes) { analyzerAssemblies = analyzerAssemblies.Concat(AnalyzerAssemblyLoader.LoadFiles(RoslynatorCodeFixesAssemblies)); } CultureInfo culture = (Options.Culture != null) ? CultureInfo.GetCultureInfo(Options.Culture) : null; return(await FixAsync(projectOrSolution, analyzerAssemblies, codeFixerOptions, culture, cancellationToken)); }