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 void ComputeRefactoring(RefactoringContext context, ConstructorDeclarationSyntax constructorDeclaration, SemanticModel semanticModel) { DocumentationCommentData data = GenerateFromBase(constructorDeclaration, semanticModel, context.CancellationToken); if (!data.Success) { return; } RegisterRefactoring(context, constructorDeclaration, data, semanticModel); }
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)); }
private static void RegisterRefactoring(RefactoringContext context, MemberDeclarationSyntax memberDeclaration, DocumentationCommentData data, SemanticModel semanticModel) { context.RegisterRefactoring( GetTitle(), ct => RefactorAsync(context.Document, memberDeclaration, data, semanticModel, ct), RefactoringDescriptors.CopyDocumentationCommentFromBaseMember); string GetTitle() { string s; DocumentationCommentOrigin origin = data.Origin; if (origin == DocumentationCommentOrigin.BaseMember) { s = "base"; } else if (origin == DocumentationCommentOrigin.InterfaceMember) { s = "interface"; } else { Debug.Fail(origin.ToString()); s = "base"; } return($"Add comment from {s} {CSharpFacts.GetTitle(memberDeclaration)}"); } }
private static void RegisterRefactoring(RefactoringContext context, MemberDeclarationSyntax memberDeclaration, DocumentationCommentData data) { context.RegisterRefactoring( GetTitle(memberDeclaration, data.Origin), cancellationToken => RefactorAsync(context.Document, memberDeclaration, data.Comment, cancellationToken)); }