Пример #1
0
        private void AnalyzeStatement(SyntaxNodeAnalysisContext context)
        {
            if (GeneratedCodeAnalyzer?.IsGeneratedCode(context) == true)
            {
                return;
            }

            if (!context.Node.IsKind(SyntaxKind.IfStatement) ||
                IfElseAnalysis.IsIsolatedIf((IfStatementSyntax)context.Node))
            {
                BlockSyntax block = EmbeddedStatementAnalysis.GetBlockThatCanBeEmbeddedStatement(context.Node);

                if (block != null &&
                    !block.OpenBraceToken.IsMissing &&
                    !block.CloseBraceToken.IsMissing &&
                    block.OpenBraceToken.LeadingTrivia.All(f => f.IsWhitespaceOrEndOfLineTrivia()) &&
                    block.OpenBraceToken.TrailingTrivia.All(f => f.IsWhitespaceOrEndOfLineTrivia()) &&
                    block.CloseBraceToken.LeadingTrivia.All(f => f.IsWhitespaceOrEndOfLineTrivia()) &&
                    block.CloseBraceToken.TrailingTrivia.All(f => f.IsWhitespaceOrEndOfLineTrivia()))
                {
                    context.ReportDiagnostic(
                        DiagnosticDescriptors.RemoveBraces,
                        block.GetLocation(),
                        SyntaxHelper.GetNodeTitle(context.Node));

                    context.FadeOutBraces(DiagnosticDescriptors.RemoveBracesFadeOut, block);
                }
            }
        }
Пример #2
0
        private void AnalyzeStatement(SyntaxNodeAnalysisContext context)
        {
            if (GeneratedCodeAnalyzer?.IsGeneratedCode(context) == true)
            {
                return;
            }

            AnalyzeEmbeddedStatement(context);

            if (context.Node.IsKind(SyntaxKind.IfStatement) &&
                !IfElseAnalysis.IsIsolatedIf((IfStatementSyntax)context.Node))
            {
                return;
            }

            StatementSyntax statement = EmbeddedStatementAnalysis.GetEmbeddedStatementThatShouldBeInsideBlock(context.Node);

            if (statement != null)
            {
                context.ReportDiagnostic(
                    DiagnosticDescriptors.AddBraces,
                    statement.GetLocation(),
                    SyntaxHelper.GetNodeTitle(context.Node));
            }
        }
        public static bool CanRefactor(StatementSyntax statement)
        {
            if (statement == null)
            {
                throw new ArgumentNullException(nameof(statement));
            }

            return(EmbeddedStatementAnalysis.IsEmbeddableStatement(statement));
        }
        private static bool CanRefactor(RefactoringContext context, BlockSyntax block)
        {
            if (context.Span.IsEmptyOrBetweenSpans(block) &&
                EmbeddedStatementAnalysis.IsEmbeddableBlock(block))
            {
                StatementSyntax statement = EmbeddedStatementAnalysis.GetEmbeddedStatement(block.Statements[0]);

                return(statement == null ||
                       !statement.FullSpan.Contains(context.Span));
            }

            return(false);
        }
        private void AnalyzeStatement(SyntaxNodeAnalysisContext context)
        {
            if (GeneratedCodeAnalyzer?.IsGeneratedCode(context) == true)
            {
                return;
            }

            StatementSyntax statement = EmbeddedStatementAnalysis.GetEmbeddedStatement(context.Node);

            if (statement != null)
            {
                context.ReportDiagnostic(DiagnosticDescriptors.AvoidEmbeddedStatement, statement.GetLocation());
            }
        }
        private static bool CanRefactorIfElse(BlockSyntax selectedBlock, IfStatementSyntax topmostIf)
        {
            bool success = false;

            foreach (BlockSyntax block in GetBlocks(topmostIf))
            {
                if (block == selectedBlock)
                {
                    continue;
                }
                else if (EmbeddedStatementAnalysis.IsEmbeddableBlock(block))
                {
                    success = true;
                }
                else
                {
                    return(false);
                }
            }

            return(success);
        }
        private void AnalyzeSyntaxNode(SyntaxNodeAnalysisContext context)
        {
            if (GeneratedCodeAnalyzer?.IsGeneratedCode(context) == true)
            {
                return;
            }

            if (context.Node.Parent == null)
            {
                return;
            }

            if (EmbeddedStatementAnalysis.SupportsEmbeddedStatement(context.Node.Parent))
            {
                return;
            }

            Diagnostic diagnostic = Diagnostic.Create(
                DiagnosticDescriptors.RemoveEmptyStatement,
                context.Node.GetLocation());

            context.ReportDiagnostic(diagnostic);
        }
Пример #8
0
        public static void ComputeRefactoring(RefactoringContext context, BlockSyntax block)
        {
            if (context.IsAnyRefactoringEnabled(
                    RefactoringIdentifiers.RemoveStatement,
                    RefactoringIdentifiers.DuplicateStatement,
                    RefactoringIdentifiers.CommentOutStatement))
            {
                StatementSyntax statement = GetStatement(context, block, block.Parent);

                if (statement != null)
                {
                    if (!EmbeddedStatementAnalysis.IsEmbeddedStatement(statement) &&
                        statement.Parent?.IsKind(SyntaxKind.Block) == true)
                    {
                        RegisterRefactoring(context, statement);
                    }

                    if (context.IsRefactoringEnabled(RefactoringIdentifiers.CommentOutStatement))
                    {
                        CommentOutRefactoring.RegisterRefactoring(context, statement);
                    }
                }
            }
        }
 public static bool CanRefactor(StatementSyntax statement)
 {
     return(EmbeddedStatementAnalysis.IsEmbeddedStatement(statement));
 }
Пример #10
0
 private static bool CanRefactor(RefactoringContext context, StatementSyntax statement)
 {
     return(context.Span.IsEmptyOrBetweenSpans(statement) &&
            EmbeddedStatementAnalysis.IsEmbeddedStatement(statement));
 }