Replace code snippet with link to analyzer template and instructions
This commit is contained in:
Родитель
bc422780c0
Коммит
fa0788ac2a
|
@ -198,76 +198,7 @@ verifier and test types. For example, [Microsoft/vs-threading](https://github.co
|
|||
Additional Files and metadata references in most of its tests, so it uses custom verifier and test types to allow the
|
||||
use of "basic use cases" for test scenarios that would otherwise be considered advanced.
|
||||
|
||||
```csharp
|
||||
public static class CSharpAnalyzerVerifier<TAnalyzer>
|
||||
where TAnalyzer : DiagnosticAnalyzer, new()
|
||||
{
|
||||
public static DiagnosticResult Diagnostic()
|
||||
=> CSharpAnalyzerVerifier<TAnalyzer, DefaultVerifier>.Diagnostic();
|
||||
|
||||
public static DiagnosticResult Diagnostic(string diagnosticId)
|
||||
=> CSharpAnalyzerVerifier<TAnalyzer, DefaultVerifier>.Diagnostic(diagnosticId);
|
||||
|
||||
public static DiagnosticResult Diagnostic(DiagnosticDescriptor descriptor)
|
||||
=> new DiagnosticResult(descriptor);
|
||||
|
||||
public static Task VerifyAnalyzerAsync(string source, params DiagnosticResult[] expected)
|
||||
{
|
||||
var test = new Test { TestCode = source };
|
||||
test.ExpectedDiagnostics.AddRange(expected);
|
||||
return test.RunAsync();
|
||||
}
|
||||
|
||||
// Code fix tests support both analyzer and code fix testing. This test class is derived from the code fix test
|
||||
// to avoid the need to maintain duplicate copies of the customization work.
|
||||
public class Test : CSharpCodeFixVerifier<TAnalyzer, EmptyCodeFixProvider>.Test
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
public static class CSharpCodeFixVerifier<TAnalyzer, TCodeFix>
|
||||
where TAnalyzer : DiagnosticAnalyzer, new()
|
||||
where TCodeFix : CodeFixProvider, new()
|
||||
{
|
||||
public static DiagnosticResult Diagnostic(string diagnosticId)
|
||||
=> CSharpCodeFixVerifier<TAnalyzer, TCodeFix, DefaultVerifier>.Diagnostic(diagnosticId);
|
||||
|
||||
public static DiagnosticResult Diagnostic(DiagnosticDescriptor descriptor)
|
||||
=> new DiagnosticResult(descriptor);
|
||||
|
||||
public static Task VerifyAnalyzerAsync(string source, params DiagnosticResult[] expected)
|
||||
{
|
||||
var test = new CSharpAnalyzerVerifier<TAnalyzer>.Test { TestCode = source };
|
||||
test.ExpectedDiagnostics.AddRange(expected);
|
||||
return test.RunAsync();
|
||||
}
|
||||
|
||||
public static Task VerifyCodeFixAsync(string source, string fixedSource)
|
||||
=> VerifyCodeFixAsync(source, DiagnosticResult.EmptyDiagnosticResults, fixedSource);
|
||||
|
||||
public static Task VerifyCodeFixAsync(string source, DiagnosticResult expected, string fixedSource)
|
||||
=> VerifyCodeFixAsync(source, new[] { expected }, fixedSource);
|
||||
|
||||
public static Task VerifyCodeFixAsync(string source, DiagnosticResult[] expected, string fixedSource)
|
||||
{
|
||||
var test = new Test
|
||||
{
|
||||
TestCode = source,
|
||||
FixedCode = fixedSource,
|
||||
};
|
||||
|
||||
test.ExpectedDiagnostics.AddRange(expected);
|
||||
return test.RunAsync();
|
||||
}
|
||||
|
||||
public class Test : CSharpCodeFixTest<TAnalyzer, TCodeFix, DefaultVerifier>
|
||||
{
|
||||
public Test()
|
||||
{
|
||||
// Custom initialization logic here
|
||||
}
|
||||
|
||||
// Custom analyzers and/or code fix properties here
|
||||
}
|
||||
}
|
||||
```
|
||||
To create a custom verifier, add your test setup or configuration to the corresponding `Test` class provided by the
|
||||
[analyzer template](../VisualStudio.Roslyn.SDK/Roslyn.SDK/ProjectTemplates/CSharp/Diagnostic/Test/Verifiers). See
|
||||
https://learn.microsoft.com/en-us/dotnet/csharp/roslyn-sdk/tutorials/how-to-write-csharp-analyzer-code-fix for
|
||||
instructions on using the analyzer template.
|
||||
|
|
Загрузка…
Ссылка в новой задаче