diff --git a/src/Dapr.Actors.Analyzers/MapActorsHandlersCodeFixProvider.cs b/src/Dapr.Actors.Analyzers/MapActorsHandlersCodeFixProvider.cs index c79aebf6..60dc7a4e 100644 --- a/src/Dapr.Actors.Analyzers/MapActorsHandlersCodeFixProvider.cs +++ b/src/Dapr.Actors.Analyzers/MapActorsHandlersCodeFixProvider.cs @@ -58,87 +58,68 @@ private async Task AddMapActorsHandlersAsync(Document document, Diagno var root = await document.GetSyntaxRootAsync(cancellationToken); var invocationExpressions = root!.DescendantNodes().OfType(); - if (invocationExpressions.Any()) - { - var createBuilderInvocation = invocationExpressions - .FirstOrDefault(invocation => - { - return invocation.Expression is MemberAccessExpressionSyntax memberAccess && - memberAccess.Name.Identifier.Text == "CreateBuilder" && - memberAccess.Expression is IdentifierNameSyntax identifier && - identifier.Identifier.Text == "WebApplication"; - }); - - if (createBuilderInvocation != null) + var createBuilderInvocation = invocationExpressions + .FirstOrDefault(invocation => + { + return invocation.Expression is MemberAccessExpressionSyntax memberAccess && + memberAccess.Name.Identifier.Text == "CreateBuilder" && + memberAccess.Expression is IdentifierNameSyntax identifier && + identifier.Identifier.Text == "WebApplication"; + }); + + var variableDeclarator = createBuilderInvocation + .AncestorsAndSelf() + .OfType() + .FirstOrDefault(); + + var variableName = variableDeclarator.Identifier.Text; + + var buildInvocation = invocationExpressions + .FirstOrDefault(invocation => { - var variableDeclarator = createBuilderInvocation - .AncestorsAndSelf() - .OfType() - .FirstOrDefault(); - - if (variableDeclarator != null) - { - var variableName = variableDeclarator.Identifier.Text; - - var buildInvocation = invocationExpressions - .FirstOrDefault(invocation => - { - return invocation.Expression is MemberAccessExpressionSyntax memberAccess && - memberAccess.Name.Identifier.Text == "Build" && - memberAccess.Expression is IdentifierNameSyntax identifier && - identifier.Identifier.Text == variableName; - }); - - if (buildInvocation != null) - { - var buildVariableDeclarator = buildInvocation - .AncestorsAndSelf() - .OfType() - .FirstOrDefault(); - - if (buildVariableDeclarator != null) - { - var buildVariableName = buildVariableDeclarator.Identifier.Text; - - var mapActorsHandlersInvocation = SyntaxFactory.ExpressionStatement( - SyntaxFactory.InvocationExpression( - SyntaxFactory.MemberAccessExpression( - SyntaxKind.SimpleMemberAccessExpression, - SyntaxFactory.IdentifierName(buildVariableName), - SyntaxFactory.IdentifierName("MapActorsHandlers")))); - - if (buildInvocation.Ancestors().OfType().FirstOrDefault() is SyntaxNode parentBlock) - { - var localDeclaration = buildInvocation - .AncestorsAndSelf() - .OfType() - .FirstOrDefault(); - - var newParentBlock = parentBlock.InsertNodesAfter(localDeclaration, new[] { mapActorsHandlersInvocation }); - root = root.ReplaceNode(parentBlock, newParentBlock); - } - else - { - var buildInvocationGlobalStatement = buildInvocation - .AncestorsAndSelf() - .OfType() - .FirstOrDefault(); - - var compilationUnitSyntax = createBuilderInvocation.Ancestors().OfType().FirstOrDefault(); - var newCompilationUnitSyntax = compilationUnitSyntax.InsertNodesAfter(buildInvocationGlobalStatement, - new[] { SyntaxFactory.GlobalStatement(mapActorsHandlersInvocation) }); - root = root.ReplaceNode(compilationUnitSyntax, newCompilationUnitSyntax); - } - - return document.WithSyntaxRoot(root); - } - } - } - } - - return document; + return invocation.Expression is MemberAccessExpressionSyntax memberAccess && + memberAccess.Name.Identifier.Text == "Build" && + memberAccess.Expression is IdentifierNameSyntax identifier && + identifier.Identifier.Text == variableName; + }); + + var buildVariableDeclarator = buildInvocation + .AncestorsAndSelf() + .OfType() + .FirstOrDefault(); + + var buildVariableName = buildVariableDeclarator.Identifier.Text; + + var mapActorsHandlersInvocation = SyntaxFactory.ExpressionStatement( + SyntaxFactory.InvocationExpression( + SyntaxFactory.MemberAccessExpression( + SyntaxKind.SimpleMemberAccessExpression, + SyntaxFactory.IdentifierName(buildVariableName), + SyntaxFactory.IdentifierName("MapActorsHandlers")))); + + if (buildInvocation.Ancestors().OfType().FirstOrDefault() is SyntaxNode parentBlock) + { + var localDeclaration = buildInvocation + .AncestorsAndSelf() + .OfType() + .FirstOrDefault(); + + var newParentBlock = parentBlock.InsertNodesAfter(localDeclaration, new[] { mapActorsHandlersInvocation }); + root = root.ReplaceNode(parentBlock, newParentBlock); + } + else + { + var buildInvocationGlobalStatement = buildInvocation + .AncestorsAndSelf() + .OfType() + .FirstOrDefault(); + + var compilationUnitSyntax = createBuilderInvocation.Ancestors().OfType().FirstOrDefault(); + var newCompilationUnitSyntax = compilationUnitSyntax.InsertNodesAfter(buildInvocationGlobalStatement, + new[] { SyntaxFactory.GlobalStatement(mapActorsHandlersInvocation) }); + root = root.ReplaceNode(compilationUnitSyntax, newCompilationUnitSyntax); } - return document; + return document.WithSyntaxRoot(root); } }