private static void AddBracesToIfElseChain(CodeRefactoringContext context, IfStatementSyntax ifStatement)
        {
            if (IfElseChainAnalysis.IsTopmostIf(ifStatement) &&
                ifStatement.Else != null &&
                ifStatement.IfKeyword.Span.Contains(context.Span))
            {
                var result = new IfElseChainAnalysisResult(ifStatement);

                if (result.AddBracesToChain)
                {
                    context.RegisterRefactoring(
                        "Add braces to if-else chain",
                        cancellationToken =>
                    {
                        return(AddBracesToIfElseChainRefactoring.RefactorAsync(
                                   context.Document,
                                   ifStatement,
                                   cancellationToken));
                    });
                }

                if (result.RemoveBracesFromChain)
                {
                    context.RegisterRefactoring(
                        "Remove braces from if-else chain",
                        cancellationToken =>
                    {
                        return(RemoveBracesFromIfElseChainRefactoring.RefactorAsync(
                                   context.Document,
                                   ifStatement,
                                   cancellationToken));
                    });
                }
            }
        }
Beispiel #2
0
        private void AnalyzeIfStatement(SyntaxNodeAnalysisContext context)
        {
            if (GeneratedCodeAnalyzer?.IsGeneratedCode(context) == true)
            {
                return;
            }

            if (context.Node.Parent?.IsKind(SyntaxKind.ElseClause) == true)
            {
                return;
            }

            var ifStatement = (IfStatementSyntax)context.Node;

            if (ifStatement.Else != null)
            {
                var result = new IfElseChainAnalysisResult(ifStatement);

                if (result.AddBracesToChain)
                {
                    context.ReportDiagnostic(
                        DiagnosticDescriptors.AddBracesToIfElseChain,
                        ifStatement.GetLocation());
                }

                if (result.RemoveBracesFromChain)
                {
                    context.ReportDiagnostic(
                        DiagnosticDescriptors.RemoveBracesFromIfElseChain,
                        ifStatement.GetLocation());

                    RemoveBracesFromStatementFadeOut(context, ifStatement);
                }
            }

            MergeIfStatementWithContainedIfStatementAnalyzer.Analyze(context, ifStatement);

            SimplifyIfStatementToReturnStatementAnalyzer.Analyze(context);
        }