private static ReturnStatementSyntax CreateReturnStatement(IfStatementSyntax ifStatement) { LiteralExpressionSyntax booleanLiteral = SimplifyIfStatementToReturnStatementAnalyzer.GetBooleanLiteral(ifStatement.Statement); ExpressionSyntax expression = ifStatement.Condition; if (booleanLiteral.IsKind(SyntaxKind.FalseLiteralExpression)) { expression = expression.Negate(); } return(SyntaxFactory.ReturnStatement( SyntaxFactory.Token(SyntaxKind.ReturnKeyword).WithTrailingSpace(), expression, SyntaxFactory.Token(SyntaxKind.SemicolonToken))); }
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 IfElseAnalysisResult(ifStatement); if (result.AddBraces) { context.ReportDiagnostic( DiagnosticDescriptors.AddBracesToIfElse, ifStatement.GetLocation()); } if (result.RemoveBraces) { context.ReportDiagnostic( DiagnosticDescriptors.RemoveBracesFromIfElse, ifStatement.GetLocation()); RemoveBracesFromIfElseFadeOut(context, ifStatement); } } MergeIfStatementWithNestedIfStatementAnalyzer.Analyze(context, ifStatement); SimplifyIfStatementToReturnStatementAnalyzer.Analyze(context); if (SimplifyIfElseStatementRefactoring.CanRefactor(ifStatement, context.SemanticModel, context.CancellationToken) && !ifStatement.SpanContainsDirectives()) { context.ReportDiagnostic( DiagnosticDescriptors.SimplifyIfElseStatement, ifStatement.GetLocation()); } }
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); }
private static SyntaxNode GetNewRoot( SyntaxNode root, IfStatementSyntax ifStatement, ReturnStatementSyntax newReturnStatement) { if (ifStatement.Else != null) { ReturnStatementSyntax returnStatement = SimplifyIfStatementToReturnStatementAnalyzer.GetReturnStatement(ifStatement.Statement); LiteralExpressionSyntax booleanLiteral = SimplifyIfStatementToReturnStatementAnalyzer.GetBooleanLiteral(returnStatement); newReturnStatement = newReturnStatement.WithTriviaFrom(ifStatement); return(root.ReplaceNode(ifStatement, newReturnStatement)); } else { var block = (BlockSyntax)ifStatement.Parent; int index = block.Statements.IndexOf(ifStatement); var returnStatement = (ReturnStatementSyntax)block.Statements[index + 1]; LiteralExpressionSyntax booleanLiteral = SimplifyIfStatementToReturnStatementAnalyzer.GetBooleanLiteral(returnStatement); newReturnStatement = newReturnStatement .WithLeadingTrivia(ifStatement.GetLeadingTrivia()) .WithTrailingTrivia(returnStatement.GetTrailingTrivia()); SyntaxList <StatementSyntax> statements = block.Statements .RemoveAt(index); statements = statements .Replace(statements[index], newReturnStatement); return(root.ReplaceNode(block, block.WithStatements(statements))); } }