@Override public void visitArrowFunction(ArrowFunctionTree lambdaExpressionTree) { // skip arrow function if body is an assignement if (!(lambdaExpressionTree.conciseBody() instanceof AssignmentExpressionTree)) { super.visitArrowFunction(lambdaExpressionTree); } }
@Override public void visitAssignmentExpression(AssignmentExpressionTree tree) { updatedExpressions.add(tree.variable()); super.visitAssignmentExpression(tree); }
@Override public void visitCallExpression(CallExpressionTree tree) { IdentifierTree callee = callee(tree); if (callee != null) { updatedExpressions.add(callee); } super.visitCallExpression(tree); }
@Override public void visitFunctionDeclaration(FunctionDeclarationTree tree) { enterScope(tree); super.visitFunctionDeclaration(tree); leaveScope(); }
@Override public void visitFunctionExpression(FunctionExpressionTree tree) { startScopeBlock(); super.visitFunctionExpression(tree); finishScopeBlock(); }
@Override public void visitMethodDeclaration(MethodDeclarationTree tree) { checkNumberOfParameters(tree.parameters()); super.visitMethodDeclaration(tree); }
@Override public void visitNewExpression(NewExpressionTree tree) { ExpressionTree expression = tree.expression(); if (expression.is(Tree.Kind.IDENTIFIER_REFERENCE)){ String next = ((IdentifierTree)expression).name(); if ("Array".equals(next) || "Object".equals(next)){ getContext().addIssue(this, tree, String.format("Use a literal instead of the %s constructor.", next)); } } super.visitNewExpression(tree); } }
@Override public void visitMemberExpression(MemberExpressionTree tree) { checkForUpdate(tree); memberExpressions.push(tree); super.visitMemberExpression(tree); memberExpressions.pop(); }
@Override public void visitForInStatement(ForInStatementTree tree) { checkExpression(tree.expression()); super.visitForInStatement(tree); }
@Override public void visitCallExpression(CallExpressionTree tree) { if (tree.types().contains(ObjectType.FrameworkType.JQUERY_SELECTOR_OBJECT)) { LiteralTree parameter = getSelectorParameter(tree); if (parameter != null) { List<LiteralTree> currentSelectors = selectors.peek(); currentSelectors.add(parameter); } } super.visitCallExpression(tree); }
@Override public void visitFunctionDeclaration(FunctionDeclarationTree tree) { checkNumberOfParameters(tree.parameters()); super.visitFunctionDeclaration(tree); }
@Override public void visitFunctionExpression(FunctionExpressionTree tree) { checkNumberOfParameters(tree.parameters()); super.visitFunctionExpression(tree); }
@Override public void visitMethodDeclaration(MethodDeclarationTree tree) { enterScope(tree); super.visitMethodDeclaration(tree); leaveScope(); }
@Override public void visitNewExpression(NewExpressionTree tree) { super.visitNewExpression(tree); if (tree.expression().types().contains(Type.Kind.BACKBONE_MODEL)) { ((NewExpressionTreeImpl) tree).addType(ObjectType.FrameworkType.BACKBONE_MODEL_OBJECT); } }
@Override public void visitMemberExpression(MemberExpressionTree tree) { String parentheses = ""; checkSelectorProperty(tree, SELECTOR_PROPERTIES, parentheses); checkJQueryProperty(tree, JQUERY_PROPERTIES, parentheses); super.visitMemberExpression(tree); }
@Override public void visitForInStatement(ForInStatementTree tree) { StatementTree statementNode = tree.statement(); if (statementNode.is(Kind.BLOCK)) { BlockTree block = (BlockTree) statementNode; statementNode = !block.statements().isEmpty() ? block.statements().get(0) : null; } if (statementNode != null && !statementNode.is(Kind.IF_STATEMENT)) { getContext().addIssue(this, tree, "Insert an if statement at the beginning of this loop to filter items."); } super.visitForInStatement(tree); }
@Override public void visitCallExpression(CallExpressionTree tree) { String callee = CheckUtils.asString(tree.callee()); if (OPEN_DATABASE_METHOD_CALLS.contains(callee)){ getContext().addIssue(this, tree, MESSAGE); } super.visitCallExpression(tree); }
private void visitInnerExpression(ExpressionTree tree) { AssignmentExpressionTree assignmentExpressionTree = getInnerAssignmentExpression(tree); if (assignmentExpressionTree != null) { super.visitAssignmentExpression(assignmentExpressionTree); } else { scan(tree); } }