private boolean isSubscribed(Tree tree) { return nodesToVisit.contains(tree.getKind()); }
private boolean isSubscribed(Tree tree) { return nodesToVisit.contains(tree.getKind()); }
@CheckForNull public static Tree findAncestorWithKind(Tree tree, Collection<Tree.Kind> kinds) { Tree parent = tree; while (parent != null && !kinds.contains(parent.getKind())) { parent = parent.getParent(); } return parent; } }
@CheckForNull public static Tree findAncestorWithKind(Tree tree, Collection<Tree.Kind> kinds) { Tree parent = tree; while (parent != null && !kinds.contains(parent.getKind())) { parent = parent.getParent(); } return parent; } }
private static boolean isReadAccess(Tree tree) { Predicate<Tree> predicate = IS_READ_ACCESS_BY_PARENT_KIND.get(tree.getParent().getKind()); return predicate == null || predicate.test(tree); }
private static boolean isReadAccess(Tree tree) { Predicate<Tree> predicate = IS_READ_ACCESS_BY_PARENT_KIND.get(tree.getParent().getKind()); return predicate == null || predicate.test(tree); }
@Override public void visitNode(Tree tree) { switch (tree.getKind()) { case CLASS_DECLARATION: classCounter++; break; case NAMESPACE_NAME: namespaceNameCounter++; break; case VARIABLE_IDENTIFIER: varIdentifierCounter++; break; default: break; } } }
@Test public void test_branching_tree() { ControlFlowGraph cfg = cfgForBlock("" + "if (a) {" + " qix();" + "}"); CfgBlock block = cfg.start(); assertThat(block instanceof PhpCfgBranchingBlock).isTrue(); PhpCfgBranchingBlock ifBlock = (PhpCfgBranchingBlock) block; assertThat(ifBlock.branchingTree().getKind()).isEqualTo(Tree.Kind.IF_STATEMENT); }
@Test public void test_start_is_first_block() { ControlFlowGraph cfg = cfgForBlock("" + "foo();" + "if (a) {" + " $x = 1;" + "}"); CfgBlock startBlock = cfg.start(); assertThat(startBlock.elements()).isNotEmpty(); Tree firstElement = startBlock.elements().get(0); assertThat(firstElement.getKind()).isEqualTo(Tree.Kind.EXPRESSION_STATEMENT); ExpressionStatementTree statement = (ExpressionStatementTree) firstElement; assertThat(statement.expression().getKind()).isEqualTo(Tree.Kind.FUNCTION_CALL); }
public static List<StatementTree> getStatements(Tree tree) { List<StatementTree> statements = Collections.emptyList(); switch (tree.getKind()) { case SCRIPT: statements = ((ScriptTree) tree).statements();
public static List<StatementTree> getStatements(Tree tree) { List<StatementTree> statements = Collections.emptyList(); switch (tree.getKind()) { case SCRIPT: statements = ((ScriptTree) tree).statements();