public sealed override async Task RegisterCodeFixesAsync(CodeFixContext context) { SyntaxNode root = await context.GetSyntaxRootAsync().ConfigureAwait(false); if (!TryFindFirstAncestorOrSelf(root, context.Span, out ElseClauseSyntax elseClause)) { return; } foreach (Diagnostic diagnostic in context.Diagnostics) { switch (diagnostic.Id) { case DiagnosticIdentifiers.RemoveUnnecessaryElseClause: { CodeAction codeAction = CodeAction.Create( "Remove else clause", cancellationToken => RemoveUnnecessaryElseClauseRefactoring.RefactorAsync(context.Document, elseClause, cancellationToken), GetEquivalenceKey(diagnostic)); context.RegisterCodeFix(codeAction, diagnostic); break; } } } }
public static void Analyze(SyntaxNodeAnalysisContext context) { var elseClause = (ElseClauseSyntax)context.Node; if (elseClause.ContainsDiagnostics) { return; } if (!RemoveUnnecessaryElseClauseRefactoring.IsFixable(elseClause)) { return; } context.ReportDiagnostic(DiagnosticDescriptors.RemoveUnnecessaryElseClause, elseClause.ElseKeyword); }