private void AnalyzeSimpleMemberAccessExpression(SyntaxNodeAnalysisContext context) { var memberAccess = (MemberAccessExpressionSyntax)context.Node; UsePredefinedTypeRefactoring.Analyze(context, memberAccess); if (UseEmptyStringLiteralInsteadOfStringEmptyRefactoring.CanRefactor(memberAccess, context.SemanticModel, context.CancellationToken)) { context.ReportDiagnostic(DiagnosticDescriptors.UseEmptyStringLiteralInsteadOfStringEmpty, memberAccess); } }
public sealed override async Task RegisterCodeFixesAsync(CodeFixContext context) { SyntaxNode root = await context.GetSyntaxRootAsync().ConfigureAwait(false); MemberAccessExpressionSyntax memberAccess = root .FindNode(context.Span, getInnermostNodeForTie: true)? .FirstAncestorOrSelf <MemberAccessExpressionSyntax>(); CodeAction codeAction = CodeAction.Create( $"Replace '{memberAccess}' with \"\"", cancellationToken => { return(UseEmptyStringLiteralInsteadOfStringEmptyRefactoring.RefactorAsync( context.Document, memberAccess, cancellationToken)); }, DiagnosticIdentifiers.UseEmptyStringLiteralInsteadOfStringEmpty + EquivalenceKeySuffix); context.RegisterCodeFix(codeAction, context.Diagnostics); }
public sealed override async Task RegisterCodeFixesAsync(CodeFixContext context) { SyntaxNode root = await context.GetSyntaxRootAsync().ConfigureAwait(false); if (!TryFindFirstAncestorOrSelf(root, context.Span, out MemberAccessExpressionSyntax memberAccess)) { return; } CodeAction codeAction = CodeAction.Create( $"Use \"\" instead of '{memberAccess}'", cancellationToken => { return(UseEmptyStringLiteralInsteadOfStringEmptyRefactoring.RefactorAsync( context.Document, memberAccess, cancellationToken)); }, GetEquivalenceKey(DiagnosticIdentifiers.UseEmptyStringLiteralInsteadOfStringEmpty)); context.RegisterCodeFix(codeAction, context.Diagnostics); }