private static StatementTree getConditionalStatement(Tree tree) { List<StatementTree> statementTrees; if (tree.is(Tree.Kind.IF_STATEMENT)) { statementTrees = ((IfStatementTree) tree).statements(); } else if (tree.is(Tree.Kind.ELSEIF_CLAUSE)) { statementTrees = ((ElseifClauseTree) tree).statements(); } else { statementTrees = ((ElseClauseTree) tree).statements(); } return statementTrees.get(0); }
@Override public void visitIfStatement(IfStatementTree tree) { checkIndentation(tree.ifToken(), tree.statements()); super.visitIfStatement(tree); }
@Override public void visitIfStatement(IfStatementTree tree) { checkIndentation(tree.ifToken(), tree.statements()); super.visitIfStatement(tree); }
private static StatementTree getConditionalStatement(Tree tree) { List<StatementTree> statementTrees; if (tree.is(Tree.Kind.IF_STATEMENT)) { statementTrees = ((IfStatementTree) tree).statements(); } else if (tree.is(Tree.Kind.ELSEIF_CLAUSE)) { statementTrees = ((ElseifClauseTree) tree).statements(); } else { statementTrees = ((ElseClauseTree) tree).statements(); } return statementTrees.get(0); }
@Override public void visitIfStatement(IfStatementTree tree) { super.visitIfStatement(tree); if (tree.is(Tree.Kind.IF_STATEMENT)) { checkStatement(tree.statements().get(0), tree.ifToken()); } }
@Override public void visitIfStatement(IfStatementTree tree) { super.visitIfStatement(tree); if (tree.is(Tree.Kind.IF_STATEMENT)) { checkStatement(tree.statements().get(0), tree.ifToken()); } }
@Override public void visitIfStatement(IfStatementTree tree) { super.visitIfStatement(tree); if (tree.is(Tree.Kind.IF_STATEMENT)) { checkBlock(tree.statements().get(0), getLastToken(tree.condition())); } }
@Override public void visitIfStatement(IfStatementTree tree) { super.visitIfStatement(tree); if (tree.is(Tree.Kind.IF_STATEMENT)) { checkBlock(tree.statements().get(0), getLastToken(tree.condition())); } }
@Override public void visitIfStatement(IfStatementTree tree) { super.visitIfStatement(tree); if (tree.is(Tree.Kind.IF_STATEMENT)) { checkBlock(tree.statements().get(0), getLastToken(tree.condition())); } }
@Override public void visitIfStatement(IfStatementTree tree) { super.visitIfStatement(tree); if (tree.is(Tree.Kind.IF_STATEMENT)) { checkBlock(tree.statements().get(0), getLastToken(tree.condition())); } }
private void scanIf(IfStatementTree ifTree) { scan(ifTree.statements()); scan(ifTree.elseifClauses()); ElseClauseTree elseClause = ifTree.elseClause(); if (elseClause != null) { List<StatementTree> elseStatements = elseClause.statements(); if (elseStatements.size() == 1 && elseStatements.get(0).is(Kind.IF_STATEMENT)) { scanIf((IfStatementTree) elseStatements.get(0)); } else { scan(elseClause); } } }
private void scanIf(IfStatementTree ifTree) { scan(ifTree.statements()); scan(ifTree.elseifClauses()); ElseClauseTree elseClause = ifTree.elseClause(); if (elseClause != null) { List<StatementTree> elseStatements = elseClause.statements(); if (elseStatements.size() == 1 && elseStatements.get(0).is(Kind.IF_STATEMENT)) { scanIf((IfStatementTree) elseStatements.get(0)); } else { scan(elseClause); } } }
@Override public void visitIfStatement(IfStatementTree tree) { if (ifStatementWithoutNesting.contains(tree)) { complexity.addComplexityWithoutNesting(tree.ifToken()); } else { complexity.addComplexityWithNesting(tree.ifToken()); } visit(tree.condition()); visitWithNesting(tree.statements()); tree.elseifClauses().forEach(this::visit); visit(tree.elseClause()); }
@Override public void visitIfStatement(IfStatementTree tree) { if (ifStatementWithoutNesting.contains(tree)) { complexity.addComplexityWithoutNesting(tree.ifToken()); } else { complexity.addComplexityWithNesting(tree.ifToken()); } visit(tree.condition()); visitWithNesting(tree.statements()); tree.elseifClauses().forEach(this::visit); visit(tree.elseClause()); }
@Test public void alternative_syntax_with_else() throws Exception { IfStatementTree tree = parse("if ($a) : elseif ($a) : else : {} {} endif;", PHPLexicalGrammar.IF_STATEMENT); assertThat(tree.is(Kind.ALTERNATIVE_IF_STATEMENT)).isTrue(); assertThat(tree.colonToken()).isNotNull(); assertThat(tree.statements()).hasSize(0); assertThat(tree.elseClause()).isNotNull(); assertThat(tree.elseifClauses()).hasSize(1); assertThat(tree.elseifClauses().get(0).is(Kind.ALTERNATIVE_ELSEIF_CLAUSE)).isTrue(); assertThat(tree.endifToken()).isNotNull(); assertThat(tree.eosToken().text()).isEqualTo(";"); }
@Test public void elseif_syntax() throws Exception { IfStatementTree tree = parse("if ($a) {} elseif ($b) {} elseif ($c) {} else {}", PHPLexicalGrammar.IF_STATEMENT); assertThat(tree.statements()).hasSize(1); assertThat(tree.elseClause()).isNotNull(); assertThat(tree.elseifClauses()).hasSize(2); }
@Override public void visitIfStatement(IfStatementTree tree) { checkControlStructureOpenCurly(tree.condition().closeParenthesis(), getOpenCurlyIfBlock(tree.statements())); // Check else keyword ElseClauseTree elseClause = tree.elseClause(); if (elseClause != null) { checkCloseCurlyNextToKeyword(new TokenVisitor(tree).prevToken(elseClause.elseToken()), elseClause.elseToken()); } tree.elseifClauses().stream() .map(ElseifClauseTree::elseifToken) .forEach(elseIfClause -> checkCloseCurlyNextToKeyword(new TokenVisitor(tree).prevToken(elseIfClause), elseIfClause)); super.visitIfStatement(tree); }
@Test public void standard_syntax() throws Exception { IfStatementTree tree = parse("if ($a) {}", PHPLexicalGrammar.IF_STATEMENT); assertThat(tree.ifToken().text()).isEqualTo("if"); assertThat(expressionToString(tree.condition())).isEqualTo("($a)"); assertThat(tree.statements()).hasSize(1); assertThat(tree.elseClause()).isNull(); assertThat(tree.elseifClauses()).hasSize(0); assertThat(tree.endifToken()).isNull(); assertThat(tree.eosToken()).isNull(); }
@Override public void visitIfStatement(IfStatementTree tree) { super.visitIfStatement(tree); if (!tree.elseifClauses().isEmpty() || tree.elseClause() == null) { return; } if (returnsBoolean(getSingleStatement(tree.statements())) && returnsBoolean(getSingleStatement(tree.elseClause().statements()))) { context().newIssue(this, tree.ifToken(), tree.condition(), MESSAGE); } }
@Override public void visitIfStatement(IfStatementTree tree) { super.visitIfStatement(tree); if (!tree.elseifClauses().isEmpty() || tree.elseClause() == null) { return; } if (returnsBoolean(getSingleStatement(tree.statements())) && returnsBoolean(getSingleStatement(tree.elseClause().statements()))) { context().newIssue(this, tree.ifToken(), tree.condition(), MESSAGE); } }