public void CSharp_VerifyDiagnostic() { var source = @" using System; using System.Collections.Immutable; using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.CSharp; using Microsoft.CodeAnalysis.Diagnostics; #pragma warning disable RS1012 #pragma warning disable RS1013 [DiagnosticAnalyzer(LanguageNames.CSharp)] class MyAnalyzer : DiagnosticAnalyzer { public override ImmutableArray<DiagnosticDescriptor> SupportedDiagnostics { get { throw new NotImplementedException(); } } public override void Initialize(AnalysisContext context) { context.RegisterSyntaxNodeAction(AnalyzeSyntax, 0); context.RegisterCodeBlockStartAction<int>(AnalyzeCodeBlockStart); } private static void AnalyzeSyntax(SyntaxNodeAnalysisContext context) { } private static void AnalyzeCodeBlockStart(CodeBlockStartAnalysisContext<int> context) { } }"; DiagnosticResult[] expected = new[] { GetCSharpExpectedDiagnostic(24, 9, typeArgumentName: "Int32", registerMethodName: DiagnosticAnalyzerCorrectnessAnalyzer.RegisterSyntaxNodeActionName), GetCSharpExpectedDiagnostic(25, 9, typeArgumentName: "Int32", registerMethodName: DiagnosticAnalyzerCorrectnessAnalyzer.RegisterCodeBlockStartActionName) }; VerifyCSharp(source, expected); }
public void VisualBasic_VerifyDiagnostic() { var source = @" Imports System Imports System.Collections.Immutable Imports Microsoft.CodeAnalysis Imports Microsoft.CodeAnalysis.Diagnostics #Disable Warning RS1012 #Disable Warning RS1013 <DiagnosticAnalyzer(LanguageNames.CSharp)> Class MyAnalyzer Inherits DiagnosticAnalyzer Public Overrides ReadOnly Property SupportedDiagnostics() As ImmutableArray(Of DiagnosticDescriptor) Get Throw New NotImplementedException() End Get End Property Public Overrides Sub Initialize(context As AnalysisContext) context.RegisterSyntaxNodeAction(AddressOf AnalyzeSyntax, 0) context.RegisterCodeBlockStartAction(Of Int32)(AddressOf AnalyzeCodeBlockStart) End Sub Private Shared Sub AnalyzeSyntax(context As SyntaxNodeAnalysisContext) End Sub Private Shared Sub AnalyzeCodeBlockStart(context As CodeBlockStartAnalysisContext(Of Int32)) End Sub End Class "; DiagnosticResult[] expected = new[] { GetBasicExpectedDiagnostic(20, 9, typeArgumentName: "Int32", registerMethodName: DiagnosticAnalyzerCorrectnessAnalyzer.RegisterSyntaxNodeActionName), GetBasicExpectedDiagnostic(21, 9, typeArgumentName: "Int32", registerMethodName: DiagnosticAnalyzerCorrectnessAnalyzer.RegisterCodeBlockStartActionName) }; VerifyBasic(source, expected); }