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));
            }
        }
Beispiel #2
0
 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);
         }
     }
 }