in src/Microsoft.VisualStudio.SDK.Analyzers.CodeFixes/VSSDK006CheckServicesExistCodeFix.cs [35:55]
public override async Task RegisterCodeFixesAsync(CodeFixContext context)
{
Diagnostic diagnostic = context.Diagnostics.First();
SyntaxNode root = await context.Document.GetSyntaxRootAsync(context.CancellationToken);
SyntaxNode? node = root.FindNode(diagnostic.Location.SourceSpan, getInnermostNodeForTie: true);
SyntaxNode? presentArgument = node is VariableDeclaratorSyntax declaratorSyntax ? SyntaxFactory.IdentifierName(declaratorSyntax.Identifier)
: node.Parent is InvocationExpressionSyntax ? null // direct GetService result invocation
: node is NameSyntax ? node
: node is MemberAccessExpressionSyntax ? node
: null;
if (presentArgument != null)
{
context.RegisterCodeFix(
CodeAction.Create(
"Add Assumes.Present after assignment",
ct => AppendAfterAssignmentAsync(context, node.FirstAncestorOrSelf<StatementSyntax>(), presentArgument, ct),
"After"),
diagnostic);
}
}