/// <summary> /// Verifies that /// 1. <paramref name="code"/> produces the expected diagnostics /// 2. The code fix fixes the code. /// </summary> /// <param name="fix">The <see cref="CodeFixProvider"/> to apply.</param> /// <param name="expectedDiagnostic">The expected diagnostic.</param> /// <param name="code">The code to analyze.</param> /// <param name="fixedCode">The expected code produced by the code fix.</param> /// <param name="fixTitle">The title of the fix to apply if more than one.</param> /// <param name="allowCompilationErrors">If compilation errors are accepted in the fixed code.</param> public static void FixAll(CodeFixProvider fix, ExpectedDiagnostic expectedDiagnostic, IReadOnlyList <string> code, IReadOnlyList <string> fixedCode, string fixTitle = null, AllowCompilationErrors allowCompilationErrors = AllowCompilationErrors.No) { var analyzer = new PlaceholderAnalyzer(expectedDiagnostic.Id); FixAll( analyzer, fix, DiagnosticsAndSources.Create(expectedDiagnostic, code), fixedCode, SuppressedDiagnostics, MetadataReferences, fixTitle, allowCompilationErrors); }
/// <summary> /// Verifies that /// 1. <paramref name="code"/> produces the expected diagnostics /// 2. The code fix does not change the code. /// </summary> /// <typeparam name="TCodeFix">The type of the code fix.</typeparam> /// <param name="expectedDiagnostic">The expected diagnostic.</param> /// <param name="code">The code to analyze.</param> public static void NoFix <TCodeFix>(ExpectedDiagnostic expectedDiagnostic, params string[] code) where TCodeFix : CodeFixProvider, new() { var analyzer = new PlaceholderAnalyzer(expectedDiagnostic.Id); AssertAnalyzerSupportsExpectedDiagnostic(analyzer, expectedDiagnostic, out var descriptor, out var suppressedDiagnostics); NoFixAsync( analyzer, new TCodeFix(), new DiagnosticsAndSources(new[] { expectedDiagnostic }, code), CodeFactory.DefaultCompilationOptions(descriptor, SuppressedDiagnostics.Concat(suppressedDiagnostics)), MetadataReferences) .GetAwaiter() .GetResult(); }
/// <summary> /// Verifies that /// 1. <paramref name="code"/> produces the expected diagnostics /// 2. The code fix fixes the code. /// </summary> /// <typeparam name="TCodeFix">The type of the code fix.</typeparam> /// <param name="expectedDiagnostic">The expected diagnostic.</param> /// <param name="code">The code to analyze.</param> /// <param name="fixedCode">The expected code produced by the code fix.</param> /// <param name="fixTitle">The title of the fix to apply if more than one.</param> /// <param name="allowCompilationErrors">If compilation errors are accepted in the fixed code.</param> public static void FixAll <TCodeFix>(ExpectedDiagnostic expectedDiagnostic, string code, string fixedCode, string fixTitle = null, AllowCompilationErrors allowCompilationErrors = AllowCompilationErrors.No) where TCodeFix : CodeFixProvider, new() { var analyzer = new PlaceholderAnalyzer(expectedDiagnostic.Id); FixAll( analyzer, new TCodeFix(), DiagnosticsAndSources.Create(expectedDiagnostic, new[] { code }), new[] { fixedCode }, SuppressedDiagnostics, MetadataReferences, fixTitle, allowCompilationErrors); }
public static void FixAllOneByOne <TCodeFix>(string id, string codeWithErrorsIndicated, string fixedCode, string fixTitle = null, AllowCompilationErrors allowCompilationErrors = AllowCompilationErrors.No) where TCodeFix : CodeFixProvider, new() { var analyzer = new PlaceholderAnalyzer(id); FixAllOneByOneAsync( analyzer, new TCodeFix(), new[] { codeWithErrorsIndicated }, new[] { fixedCode }, MetadataReferences, fixTitle, allowCompilationErrors) .GetAwaiter() .GetResult(); }
public static void CodeFix <TCodeFix>(string id, IReadOnlyList <string> code, string fixedCode, string fixTitle = null, AllowCompilationErrors allowCompilationErrors = AllowCompilationErrors.No) where TCodeFix : CodeFixProvider, new() { var analyzer = new PlaceholderAnalyzer(id); CodeFixAsync( analyzer, new TCodeFix(), DiagnosticsAndSources.CreateFromCodeWithErrorsIndicated(analyzer, code), fixedCode, fixTitle, CodeFactory.DefaultCompilationOptions(analyzer, SuppressedDiagnostics), MetadataReferences, allowCompilationErrors) .GetAwaiter() .GetResult(); }
/// <summary> /// Verifies that /// 1. <paramref name="code"/> produces the expected diagnostics /// 2. The code fix fixes the code. /// </summary> /// <typeparam name="TCodeFix">The type of the code fix.</typeparam> /// <param name="expectedDiagnostic">The expected diagnostic.</param> /// <param name="code">The code to analyze.</param> /// <param name="fixedCode">The expected code produced by the code fix.</param> /// <param name="fixTitle">The title of the fix to apply if more than one.</param> /// <param name="allowCompilationErrors">If compilation errors are accepted in the fixed code.</param> public static void CodeFix <TCodeFix>(ExpectedDiagnostic expectedDiagnostic, string code, string fixedCode, string fixTitle = null, AllowCompilationErrors allowCompilationErrors = AllowCompilationErrors.No) where TCodeFix : CodeFixProvider, new() { var analyzer = new PlaceholderAnalyzer(expectedDiagnostic.Id); CodeFixAsync( analyzer, new TCodeFix(), DiagnosticsAndSources.Create(expectedDiagnostic, new[] { code }), fixedCode, fixTitle, CodeFactory.DefaultCompilationOptions(analyzer, SuppressedDiagnostics), MetadataReferences, allowCompilationErrors) .GetAwaiter() .GetResult(); }
/// <summary> /// Verifies that /// 1. <paramref name="code"/> produces the expected diagnostics /// 2. The code fix fixes the code. /// </summary> /// <typeparam name="TCodeFix">The type of the code fix.</typeparam> /// <param name="expectedDiagnostic">The expected diagnostic.</param> /// <param name="code">The code to analyze.</param> /// <param name="fixedCode">The expected code produced by the code fix.</param> /// <param name="fixTitle">The title of the fix to apply if more than one.</param> /// <param name="allowCompilationErrors">If compilation errors are accepted in the fixed code.</param> public static void CodeFix <TCodeFix>(ExpectedDiagnostic expectedDiagnostic, IReadOnlyList <string> code, string fixedCode, string fixTitle = null, AllowCompilationErrors allowCompilationErrors = AllowCompilationErrors.No) where TCodeFix : CodeFixProvider, new() { var analyzer = new PlaceholderAnalyzer(expectedDiagnostic.Id); AssertAnalyzerSupportsExpectedDiagnostic(analyzer, expectedDiagnostic, out var descriptor, out var suppressedDiagnostics); CodeFixAsync( analyzer, new TCodeFix(), DiagnosticsAndSources.Create(expectedDiagnostic, code), fixedCode, fixTitle, CodeFactory.DefaultCompilationOptions(descriptor, SuppressedDiagnostics.Concat(suppressedDiagnostics)), MetadataReferences, allowCompilationErrors) .GetAwaiter() .GetResult(); }
/// <summary> /// Verifies that /// 1. <paramref name="code"/> produces the expected diagnostics /// 2. The code fix does not change the code. /// </summary> /// <param name="fix">The <see cref="CodeFixProvider"/> to apply on the <see cref="Diagnostic"/> reported.</param> /// <param name="expectedDiagnostic">The <see cref="ExpectedDiagnostic"/> with information about the expected <see cref="Diagnostic"/>.</param> /// <param name="code">The code to analyze. Indicate error position with ↓ (alt + 25).</param> /// <param name="allowCompilationErrors">Specify if compilation errors are accepted in the fixed code. This can be for example syntax errors. Default value is <see cref="AllowCompilationErrors.No"/>.</param> /// <param name="suppressWarnings">A collection of <see cref="DiagnosticDescriptor.Id"/> to suppress when analyzing the code. Default is <see langword="null" /> meaning <see cref="SuppressedDiagnostics"/> are used.</param> /// <param name="metadataReferences">A collection of <see cref="MetadataReference"/> to use when compiling. Default is <see langword="null" /> meaning <see cref="MetadataReferences"/> are used.</param> /// <param name="compilationOptions">The <see cref="CSharpCompilationOptions"/>.</param> public static void NoFix( CodeFixProvider fix, ExpectedDiagnostic expectedDiagnostic, IReadOnlyList <string> code, AllowCompilationErrors allowCompilationErrors = AllowCompilationErrors.No, IEnumerable <string>?suppressWarnings = null, IEnumerable <MetadataReference>?metadataReferences = null, CSharpCompilationOptions?compilationOptions = null) { var analyzer = new PlaceholderAnalyzer(expectedDiagnostic.Id); NoFix( analyzer: analyzer, fix: fix, diagnosticsAndSources: DiagnosticsAndSources.CreateFromCodeWithErrorsIndicated(analyzer, code), allowCompilationErrors: allowCompilationErrors, suppressWarnings: suppressWarnings, metadataReferences: metadataReferences, compilationOptions: compilationOptions); }