public override void Initialize(AnalysisContext context) { if (context == null) { throw new ArgumentNullException(nameof(context)); } base.Initialize(context); context.RegisterSyntaxNodeAction( f => AvoidImplicitlyTypedArrayRefactoring.AnalyzeImplicitArrayCreationExpression(f), SyntaxKind.ImplicitArrayCreationExpression); }
public sealed override async Task RegisterCodeFixesAsync(CodeFixContext context) { SyntaxNode root = await context.GetSyntaxRootAsync().ConfigureAwait(false); if (!TryFindFirstAncestorOrSelf(root, context.Span, out ImplicitArrayCreationExpressionSyntax expression)) { return; } SemanticModel semanticModel = await context.GetSemanticModelAsync().ConfigureAwait(false); var typeSymbol = semanticModel.GetTypeSymbol(expression, context.CancellationToken) as IArrayTypeSymbol; CodeAction codeAction = CodeAction.Create( $"Declare explicit type '{SymbolDisplay.ToMinimalDisplayString(typeSymbol, semanticModel, expression.SpanStart, SymbolDisplayFormats.Default)}'", cancellationToken => AvoidImplicitlyTypedArrayRefactoring.RefactorAsync(context.Document, expression, cancellationToken), GetEquivalenceKey(DiagnosticIdentifiers.AvoidImplicitlyTypedArray)); context.RegisterCodeFix(codeAction, context.Diagnostics); }
public sealed override async Task RegisterCodeFixesAsync(CodeFixContext context) { SyntaxNode root = await context.GetSyntaxRootAsync().ConfigureAwait(false); ImplicitArrayCreationExpressionSyntax expression = root .FindNode(context.Span, getInnermostNodeForTie: true)? .FirstAncestorOrSelf <ImplicitArrayCreationExpressionSyntax>(); if (expression == null) { return; } SemanticModel semanticModel = await context.GetSemanticModelAsync().ConfigureAwait(false); var typeSymbol = semanticModel.GetTypeSymbol(expression, context.CancellationToken) as IArrayTypeSymbol; CodeAction codeAction = CodeAction.Create( $"Declare explicit type '{SymbolDisplay.GetMinimalString(typeSymbol, semanticModel, expression.Span.Start)}'", cancellationToken => AvoidImplicitlyTypedArrayRefactoring.RefactorAsync(context.Document, expression, cancellationToken), DiagnosticIdentifiers.AvoidImplicitlyTypedArray + EquivalenceKeySuffix); context.RegisterCodeFix(codeAction, context.Diagnostics); }
private void AnalyzeSyntaxNode(SyntaxNodeAnalysisContext context) { var expression = (ImplicitArrayCreationExpressionSyntax)context.Node; AvoidImplicitlyTypedArrayRefactoring.Analyze(context, expression); }