public static async Task <Document> RefactorAsync(
            Document document,
            MemberDeclarationSyntax memberDeclaration,
            bool copyCommentFromBaseIfAvailable,
            CancellationToken cancellationToken)
        {
            MemberDeclarationSyntax newNode = null;

            if (copyCommentFromBaseIfAvailable &&
                DocumentationCommentGenerator.CanGenerateFromBase(memberDeclaration.Kind()))
            {
                SemanticModel semanticModel = await document.GetSemanticModelAsync(cancellationToken).ConfigureAwait(false);

                BaseDocumentationCommentInfo info = DocumentationCommentGenerator.GenerateFromBase(memberDeclaration, semanticModel, cancellationToken);

                if (info.Success)
                {
                    newNode = Inserter.InsertDocumentationComment(memberDeclaration, info.Trivia, indent: true);
                }
            }

            newNode = newNode ?? DocumentationCommentGenerator.AddNewDocumentationComment(memberDeclaration);

            return(await document.ReplaceNodeAsync(memberDeclaration, newNode, cancellationToken).ConfigureAwait(false));
        }
        public static async Task <Document> RefactorAsync(
            Document document,
            MemberDeclarationSyntax memberDeclaration,
            bool copyCommentFromBaseIfAvailable,
            CancellationToken cancellationToken = default(CancellationToken))
        {
            MemberDeclarationSyntax newNode = null;

            if (copyCommentFromBaseIfAvailable &&
                DocumentationCommentGenerator.CanGenerateFromBase(memberDeclaration.Kind()))
            {
                SemanticModel semanticModel = await document.GetSemanticModelAsync(cancellationToken).ConfigureAwait(false);

                DocumentationCommentData data = DocumentationCommentGenerator.GenerateFromBase(memberDeclaration, semanticModel, cancellationToken);

                if (data.Success)
                {
                    SyntaxTrivia comment = data.GetDocumentationCommentTrivia(semanticModel, memberDeclaration.SpanStart);

                    newNode = memberDeclaration.WithDocumentationComment(comment, indent: true);
                }
            }

            newNode = newNode ?? memberDeclaration.WithNewSingleLineDocumentationComment();

            return(await document.ReplaceNodeAsync(memberDeclaration, newNode, cancellationToken).ConfigureAwait(false));
        }
        public static Task <Document> RefactorAsync(
            Document document,
            MemberDeclarationSyntax memberDeclaration,
            CancellationToken cancellationToken)
        {
            MemberDeclarationSyntax newNode = DocumentationCommentGenerator.GenerateAndAttach(memberDeclaration);

            return(document.ReplaceNodeAsync(memberDeclaration, newNode, cancellationToken));
        }
        public static async Task ComputeRefactoringAsync(RefactoringContext context, ConstructorDeclarationSyntax constructorDeclaration)
        {
            if (!constructorDeclaration.HasDocumentationComment())
            {
                SemanticModel semanticModel = await context.GetSemanticModelAsync().ConfigureAwait(false);

                BaseDocumentationCommentData data = DocumentationCommentGenerator.GenerateFromBase(constructorDeclaration, semanticModel, context.CancellationToken);

                if (data.Success)
                {
                    RegisterRefactoring(context, constructorDeclaration, data);
                }
            }
        }
Ejemplo n.º 5
0
        public override SyntaxNode VisitNamespaceDeclaration(NamespaceDeclarationSyntax node)
        {
            node = (NamespaceDeclarationSyntax)base.VisitNamespaceDeclaration(node);

            if (!_settings.SkipNamespaceDeclaration &&
                !node.HasSingleLineDocumentationComment())
            {
                return(DocumentationCommentGenerator.GenerateAndAttach(node, _settings));
            }
            else
            {
                return(node);
            }
        }
        public static async Task ComputeRefactoringAsync(RefactoringContext context, EventFieldDeclarationSyntax eventFieldDeclaration)
        {
            if (!eventFieldDeclaration.HasSingleLineDocumentationComment())
            {
                SemanticModel semanticModel = await context.GetSemanticModelAsync().ConfigureAwait(false);

                BaseDocumentationCommentInfo info = DocumentationCommentGenerator.GenerateFromBase(eventFieldDeclaration, semanticModel, context.CancellationToken);

                if (info.Success)
                {
                    RegisterRefactoring(context, eventFieldDeclaration, info);
                }
            }
        }
Ejemplo n.º 7
0
        public override SyntaxNode VisitInterfaceDeclaration(InterfaceDeclarationSyntax node)
        {
            bool isPubliclyVisible = node.IsPubliclyVisible();

            node = (InterfaceDeclarationSyntax)base.VisitInterfaceDeclaration(node);

            if (isPubliclyVisible &&
                !node.HasSingleLineDocumentationComment())
            {
                return(DocumentationCommentGenerator.GenerateAndAttach(node, _settings));
            }
            else
            {
                return(node);
            }
        }
        public static async Task ComputeRefactoringAsync(RefactoringContext context, EventFieldDeclarationSyntax eventFieldDeclaration)
        {
            if (eventFieldDeclaration.HasDocumentationComment())
            {
                return;
            }

            SemanticModel semanticModel = await context.GetSemanticModelAsync().ConfigureAwait(false);

            DocumentationCommentData data = DocumentationCommentGenerator.GenerateFromBase(eventFieldDeclaration, semanticModel, context.CancellationToken);

            if (!data.Success)
            {
                return;
            }

            RegisterRefactoring(context, eventFieldDeclaration, data);
        }
        public static async Task <Document> RefactorAsync(
            Document document,
            MemberDeclarationSyntax memberDeclaration,
            bool copyCommentFromBaseIfAvailable,
            CancellationToken cancellationToken = default)
        {
            MemberDeclarationSyntax newNode = null;

            if (copyCommentFromBaseIfAvailable &&
                DocumentationCommentGenerator.CanGenerateFromBase(memberDeclaration.Kind()))
            {
                SemanticModel semanticModel = await document.GetSemanticModelAsync(cancellationToken).ConfigureAwait(false);

                DocumentationCommentData data = DocumentationCommentGenerator.GenerateFromBase(memberDeclaration, semanticModel, cancellationToken);

                if (data.Success)
                {
                    SyntaxTrivia comment = DocumentationCommentTriviaFactory.Parse(data.RawXml, semanticModel, memberDeclaration.SpanStart);

                    newNode = memberDeclaration.WithDocumentationComment(comment, indent: true);
                }
            }

            DocumentationCommentGeneratorSettings settings = DocumentationCommentGeneratorSettings.Default;

            if (document.TryGetAnalyzerOptionValue(
                    memberDeclaration,
                    CodeFixOptions.CS1591_MissingXmlCommentForPubliclyVisibleTypeOrMember_IgnoredTags,
                    out string value))
            {
                ImmutableArray <string> ignoredTags = value
                                                      .Split(_tagSeparator, StringSplitOptions.RemoveEmptyEntries)
                                                      .Select(f => f.Trim())
                                                      .Where(f => f.Length > 0)
                                                      .ToImmutableArray();

                settings = new DocumentationCommentGeneratorSettings(ignoredTags: ignoredTags);
            }

            newNode ??= memberDeclaration.WithNewSingleLineDocumentationComment(settings);

            return(await document.ReplaceNodeAsync(memberDeclaration, newNode, cancellationToken).ConfigureAwait(false));
        }