public static void Analyze(SyntaxNodeAnalysisContext context, MemberDeclarationSyntax declaration) { SyntaxTokenList modifiers = declaration.GetModifiers(); if (modifiers.Count > 1 && !ModifierComparer.IsListSorted(modifiers) && !declaration.ContainsDirectives(modifiers.Span)) { context.ReportDiagnostic( DiagnosticDescriptors.ReorderModifiers, Location.Create(context.Node.SyntaxTree, modifiers.Span)); } }
private static void ReportDiagnostic( SyntaxNodeAnalysisContext context, MemberDeclarationSyntax memberDeclaration, SyntaxTokenList modifiers, SyntaxToken token) { if (!memberDeclaration.ContainsDirectives(modifiers.Span)) { if (!modifiers.ContainsAccessModifier() || memberDeclaration.GetDeclaredAccessibility() != Accessibility.ProtectedOrInternal || AreTokensNextToEachOther(modifiers, SyntaxKind.ProtectedKeyword, SyntaxKind.InternalKeyword)) { context.ReportDiagnostic( DiagnosticDescriptors.OverridingMemberCannotChangeAccessModifiers, token); } } }