@Override public void visitIfStatement(IfStatementTree tree) { scan(tree.condition()); scan(tree.statement()); scan(tree.elseClause()); }
private static IssueLocation issueLocation(IfStatementTree tree, String message) { return new IssueLocation(tree.ifKeyword(), tree.closeParenthesisToken(), message); }
private List<Tree> collectBranches(IfStatementTree ifStatement) { List<Tree> branches = new ArrayList<>(); branches.add(ifStatement.statement()); ElseClauseTree elseClause = ifStatement.elseClause(); while (elseClause != null) { if (elseClause.statement().is(Kind.IF_STATEMENT)) { IfStatementTree chainedIfStatement = (IfStatementTree) elseClause.statement(); chainedIfStatements.add(chainedIfStatement); branches.add(chainedIfStatement.statement()); elseClause = chainedIfStatement.elseClause(); } else { branches.add(elseClause.statement()); elseClause = null; } } return branches; }
private static Tree nestedStatement(Tree nestingStatement) { if (nestingStatement.is(Kind.IF_STATEMENT)) { return ((IfStatementTree) nestingStatement).statement(); } return ((IterationStatementTree) nestingStatement).statement(); }
@Override public void visitIfStatement(IfStatementTree tree) { ExpressionTree condition = tree.condition(); ElseClauseTree elseClause = tree.elseClause(); while (elseClause != null && elseClause.statement().is(Tree.Kind.IF_STATEMENT)) { IfStatementTree ifStatement = (IfStatementTree) elseClause.statement(); if (SyntacticEquivalence.areEquivalent(condition, ifStatement.condition())) { getContext().addIssue(this, ifStatement.condition(), "This branch duplicates the one on line " + ((AstNode) condition).getTokenLine() + "."); } elseClause = ifStatement.elseClause(); } super.visitIfStatement(tree); }
private static boolean allBranchesPresent(IfStatementTree tree) { IfStatementTree lastIfStatement = tree; while (lastIfStatement.elseClause() != null) { StatementTree elseStatement = lastIfStatement.elseClause().statement(); if (elseStatement.is(Kind.IF_STATEMENT)) { lastIfStatement = (IfStatementTree) elseStatement; } else { break; } } return lastIfStatement.elseClause() != null; }
@Override public void visitIfStatement(IfStatementTree tree) { increaseAndCheckNestedLevel(tree.ifKeyword()); visitIf(tree); decreaseNestedLevel(); }
private void checkConditional(Tree parent, SyntaxToken openCurly) { if (parent.is(Kind.IF_STATEMENT)) { issueIfLineMismatch(openCurly, ((IfStatementTree) parent).closeParenthesisToken()); } if (parent.is(Kind.ELSE_CLAUSE)) { issueIfLineMismatch(openCurly, ((ElseClauseTree) parent).elseKeyword()); } }
private static Set<Tree> getNeverExecutedCode(Tree condition, boolean isTruthy) { Set<Tree> neverExecutedCode = new HashSet<>(); Tree biggestTreeWithSameTruthiness = biggestTreeWithSameTruthiness(condition, isTruthy, neverExecutedCode); Tree parent = CheckUtils.parentIgnoreParentheses(biggestTreeWithSameTruthiness); if (parent.is(Kind.IF_STATEMENT)) { IfStatementTree ifStatementTree = (IfStatementTree) parent; if (isTruthy) { if (ifStatementTree.elseClause() != null) { neverExecutedCode.add(ifStatementTree.elseClause()); } } else { neverExecutedCode.add(ifStatementTree.statement()); } } else if (parent.is(KindSet.LOOP_KINDS) && !isTruthy) { neverExecutedCode.add(((IterationStatementTree) parent).statement()); } else if (parent.is(Kind.CONDITIONAL_EXPRESSION)) { ConditionalExpressionTree conditionalExpressionTree = (ConditionalExpressionTree) parent; neverExecutedCode.add(isTruthy ? conditionalExpressionTree.falseExpression() : conditionalExpressionTree.trueExpression()); } return neverExecutedCode; }
/** * In * <pre> * if (a) * ; * else * ; * </pre> * the semicolons are necessary (so no issue is raised) as there are no curly brackets. */ @Override public void visitIfStatement(IfStatementTree tree) { except(tree.statement()); super.visitIfStatement(tree); }
@Nullable private static IfStatementTree getIfStatementWithoutElse(StatementTree statement) { if (statement.is(Kind.IF_STATEMENT) && ((IfStatementTree) statement).elseClause() == null) { return (IfStatementTree) statement; } else { return null; } }
@Override public void visitIfStatement(IfStatementTree tree) { ExpressionTree condition = tree.condition(); if (condition.types().containsOnly(Type.Kind.JQUERY_SELECTOR_OBJECT)) { addIssue(condition, MESSAGE); } super.visitIfStatement(tree); }
@Override public void visitIfStatement(IfStatementTree tree) { if (tree.elseClause() == null) { StatementTree innerStatement = tree.statement(); if (isBlockAndContainsOnlyOneIfStatement(innerStatement) || isIfStatementWithoutElse(innerStatement)) { getContext().addIssue(this, tree, "Merge this if statement with the nested one."); } } super.visitIfStatement(tree); }
private void visitIf(IfStatementTree tree) { scan(tree.condition()); scan(tree.statement()); ElseClauseTree elseClauseTree = tree.elseClause(); if (tree.elseClause() != null && elseClauseTree.statement().is(Kind.IF_STATEMENT)) { visitIf((IfStatementTreeImpl) tree.elseClause().statement()); } else { scan(tree.elseClause()); } }
private static StatementTree getImplementationFromElseClause(ElseClauseTree elseClause) { return elseClause.statement().is(Kind.IF_STATEMENT) ? ((IfStatementTree) elseClause.statement()).statement() : elseClause.statement(); }
private static boolean isIfStatementWithoutElse(StatementTree statement) { return statement.is(Kind.IF_STATEMENT) && ((IfStatementTree)statement).elseClause() == null; }
@Override public void visitIfStatement(IfStatementTree tree) { if (tree.condition().is(Kind.BOOLEAN_LITERAL)){ getContext().addIssue(this, tree, "Remove this \"if\" statement.\""); } super.visitIfStatement(tree); }
@Override public void visitIfStatement(IfStatementTree tree) { if (tree.elseClause() == null) { IfStatementTree innerIfStatement = getCollapsibleIfStatement(tree.statement()); if (innerIfStatement != null) { IssueLocation primaryLocation = issueLocation(tree, MESSAGE); IssueLocation secondaryLocation = issueLocation(innerIfStatement, SECONDARY_MESSAGE); addIssue(new PreciseIssue(this, primaryLocation).secondary(secondaryLocation)); } } super.visitIfStatement(tree); }