public sealed override async Task RegisterCodeFixesAsync(CodeFixContext context) { SyntaxNode root = await context.GetSyntaxRootAsync().ConfigureAwait(false); if (!TryFindFirstAncestorOrSelf(root, context.Span, out VariableDeclarationSyntax variableDeclaration)) { return; } CodeAction codeAction = CodeAction.Create( SplitVariableDeclarationRefactoring.GetTitle(variableDeclaration), cancellationToken => SplitVariableDeclarationRefactoring.RefactorAsync(context.Document, variableDeclaration, cancellationToken), GetEquivalenceKey(DiagnosticIdentifiers.SplitVariableDeclaration)); context.RegisterCodeFix(codeAction, context.Diagnostics); }
private void AnalyzeVariableDeclaration(SyntaxNodeAnalysisContext context) { var variableDeclaration = (VariableDeclarationSyntax)context.Node; if (SplitVariableDeclarationRefactoring.CanRefactor(variableDeclaration)) { SeparatedSyntaxList <VariableDeclaratorSyntax> variables = variableDeclaration.Variables; TextSpan span = TextSpan.FromBounds(variables[1].Span.Start, variables.Last().Span.End); if (context.Node .DescendantTrivia(span) .All(f => f.IsWhitespaceOrEndOfLineTrivia())) { context.ReportDiagnostic(DiagnosticDescriptors.SplitVariableDeclaration, variableDeclaration); } } }
public sealed override async Task RegisterCodeFixesAsync(CodeFixContext context) { SyntaxNode root = await context.Document.GetSyntaxRootAsync(context.CancellationToken).ConfigureAwait(false); VariableDeclarationSyntax variableDeclaration = root .FindNode(context.Span, getInnermostNodeForTie: true)? .FirstAncestorOrSelf <VariableDeclarationSyntax>(); CodeAction codeAction = CodeAction.Create( SplitVariableDeclarationRefactoring.GetTitle(variableDeclaration), cancellationToken => { return(SplitVariableDeclarationRefactoring.RefactorAsync( context.Document, variableDeclaration, cancellationToken)); }, DiagnosticIdentifiers.SplitVariableDeclaration + EquivalenceKeySuffix); context.RegisterCodeFix(codeAction, context.Diagnostics); }