internal static Accessibility GetEffectiveAccessibility(this DelegateDeclarationSyntax syntax, SemanticModel semanticModel, CancellationToken cancellationToken) { if (syntax == null) { throw new ArgumentNullException(nameof(syntax)); } if (semanticModel == null) { throw new ArgumentNullException(nameof(semanticModel)); } Accessibility declaredAccessibility = syntax.GetDeclaredAccessibility(semanticModel, cancellationToken); if (declaredAccessibility <= Accessibility.Private) { return(declaredAccessibility); } BaseTypeDeclarationSyntax enclosingType = syntax.Parent as BaseTypeDeclarationSyntax; if (enclosingType == null) { return(Accessibility.Internal); } Accessibility enclosingAccessibility = enclosingType.GetEffectiveAccessibility(semanticModel, cancellationToken); return(CombineEffectiveAccessibility(declaredAccessibility, enclosingAccessibility)); }
private static void HandleDelegateDeclaration(SyntaxNodeAnalysisContext context, StyleCopSettings settings) { DelegateDeclarationSyntax delegateDeclaration = (DelegateDeclarationSyntax)context.Node; Accessibility declaredAccessibility = delegateDeclaration.GetDeclaredAccessibility(context.SemanticModel, context.CancellationToken); Accessibility effectiveAccessibility = delegateDeclaration.GetEffectiveAccessibility(context.SemanticModel, context.CancellationToken); bool needsComment = SA1600ElementsMustBeDocumented.NeedsComment(settings.DocumentationRules, delegateDeclaration.Kind(), delegateDeclaration.Parent.Kind(), declaredAccessibility, effectiveAccessibility); HandleMemberDeclaration(context, needsComment, delegateDeclaration, delegateDeclaration.TypeParameterList); }
public static void HandleDelegateDeclaration(SyntaxNodeAnalysisContext context, StyleCopSettings settings) { if (context.GetDocumentationMode() == DocumentationMode.None) { return; } DelegateDeclarationSyntax declaration = (DelegateDeclarationSyntax)context.Node; Accessibility declaredAccessibility = declaration.GetDeclaredAccessibility(context.SemanticModel, context.CancellationToken); Accessibility effectiveAccessibility = declaration.GetEffectiveAccessibility(context.SemanticModel, context.CancellationToken); if (NeedsComment(settings.DocumentationRules, declaration.Kind(), declaration.Parent.Kind(), declaredAccessibility, effectiveAccessibility)) { if (!XmlCommentHelper.HasDocumentation(declaration)) { context.ReportDiagnostic(Diagnostic.Create(Descriptor, declaration.Identifier.GetLocation())); } } }
internal static Accessibility GetEffectiveAccessibility(this DelegateDeclarationSyntax syntax, SemanticModel semanticModel, CancellationToken cancellationToken) { Requires.NotNull(syntax, nameof(syntax)); Requires.NotNull(semanticModel, nameof(semanticModel)); Accessibility declaredAccessibility = syntax.GetDeclaredAccessibility(semanticModel, cancellationToken); if (declaredAccessibility <= Accessibility.Private) { return(declaredAccessibility); } if (!(syntax.Parent is BaseTypeDeclarationSyntax enclosingType)) { return(Accessibility.Internal); } Accessibility enclosingAccessibility = enclosingType.GetEffectiveAccessibility(semanticModel, cancellationToken); return(CombineEffectiveAccessibility(declaredAccessibility, enclosingAccessibility)); }