@Override public final void visitMethod(MethodTree tree) { if (!isEquals(tree)) { super.visitMethod(tree); } }
@Override public void visitClass(ClassTree tree) { // visit the class body but ignore inner classes if (!visitedClassTree) { visitedClassTree = true; super.visitClass(tree); } }
@Override public void visitIfStatement(IfStatementTree tree) { statements++; super.visitIfStatement(tree); }
@Override public void visitVariable(VariableTree tree) { visitNode(tree); super.visitVariable(tree); }
@Override public void visitForStatement(ForStatementTree tree) { loopLevel.push(tree); super.visitForStatement(tree); loopLevel.pop(); }
@Override public void visitBreakStatement(BreakStatementTree tree) { statements++; super.visitBreakStatement(tree); }
@Override public void visitBinaryExpression(BinaryExpressionTree tree) { if (tree.is(Tree.Kind.CONDITIONAL_AND, Tree.Kind.CONDITIONAL_OR)) { blame.add(tree.operatorToken()); } super.visitBinaryExpression(tree); } }
@Override public void visitContinueStatement(ContinueStatementTree tree) { statements++; super.visitContinueStatement(tree); }
@Override public void visitCatch(CatchTree tree) { // Create new environment - this is required, because new scope is created createNewEnvironment(tree); super.visitCatch(tree); restoreEnvironment(tree); }
@Override public void visitCompilationUnit(CompilationUnitTree tree) { if (outerClass == null) { outerClass = tree; } super.visitCompilationUnit(tree); if (tree.equals(outerClass)) { newSymbolTable.save(); } }
@Override public void visitVariable(VariableTree tree) { if (isField(tree)) { // skip fields return; } super.visitVariable(tree); }
@Override public void visitForStatement(ForStatementTree tree) { treeKindStack.push(tree.kind()); super.visitForStatement(tree); treeKindStack.pop(); }
@Override public void visitBreakStatement(BreakStatementTree tree) { statements++; super.visitBreakStatement(tree); }
@Override public final void visitBinaryExpression(BinaryExpressionTree tree) { super.visitBinaryExpression(tree); if (tree.is(Tree.Kind.EQUAL_TO, Tree.Kind.NOT_EQUAL_TO)) { checkEqualityExpression(tree); } }
@Override public void visitContinueStatement(ContinueStatementTree tree) { statements++; super.visitContinueStatement(tree); }
@Override public void visitCatch(CatchTree tree) { // Create new environment - this is required, because new scope is created createNewEnvironment(tree); super.visitCatch(tree); restoreEnvironment(tree); }
@Override public void visitCompilationUnit(CompilationUnitTree tree) { if (outerClass == null) { outerClass = tree; } super.visitCompilationUnit(tree); if (tree.equals(outerClass)) { newSymbolTable.save(); } }
@Override public void visitMethod(MethodTree tree) { visitNode(tree); super.visitMethod(tree); currentParents.pop(); }
@Override public void visitClass(ClassTree tree) { nestingLevel.push(new ArrayDeque<>()); super.visitClass(tree); nestingLevel.pop(); }
@Override public void visitVariable(VariableTree tree) { if (tree.initializer() == null) { name = tree.simpleName().name(); } else { super.visitVariable(tree); } } }