private SyntaxToken getFirstComma(BinaryExpressionTree tree) { SyntaxToken result = tree.operator(); ExpressionTree currentExpression = tree.leftOperand(); while (currentExpression.is(Kind.COMMA_OPERATOR)) { result = ((BinaryExpressionTree)currentExpression).operator(); currentExpression = ((BinaryExpressionTree) currentExpression).leftOperand(); } return result; }
private static boolean isPotentialNanComparison(BinaryExpressionTree tree) { return tree.is(Kind.STRICT_NOT_EQUAL_TO, Kind.STRICT_EQUAL_TO) && (tree.leftOperand().is( Kind.IDENTIFIER_REFERENCE, Kind.IDENTIFIER, Kind.BRACKET_MEMBER_EXPRESSION, Kind.DOT_MEMBER_EXPRESSION) || tree.leftOperand() instanceof UnaryExpressionTree); }
private static boolean isIndexOfCall(ExpressionTree expression) { if (expression.is(Kind.CALL_EXPRESSION)) { CallExpressionTree callExpr = (CallExpressionTree) expression; if (callExpr.argumentClause().arguments().size() == 1 && callExpr.callee().is(Kind.DOT_MEMBER_EXPRESSION)) { DotMemberExpressionTree memberExpr = (DotMemberExpressionTree) ((CallExpressionTree) expression).callee(); return "indexOf".equals(memberExpr.property().name()); } } return false; }
public ExpressionComponents(Tree element) { if (element instanceof AssignmentExpressionTree) { AssignmentExpressionTree assignment = (AssignmentExpressionTree) element; leftOperand = assignment.variable(); rightOperand = assignment.expression(); operator = assignment.operatorToken(); } else { BinaryExpressionTree binaryExpression = (BinaryExpressionTree) element; leftOperand = binaryExpression.leftOperand(); rightOperand = binaryExpression.rightOperand(); operator = binaryExpression.operatorToken(); } }
private static String getCalleeName(CallExpressionTree callExpression) { ExpressionTree callee = CheckUtils.removeParenthesis(callExpression.callee()); if (callee.is(Kind.DOT_MEMBER_EXPRESSION)) { return ((DotMemberExpressionTree) callee).property().name(); } else { return CheckUtils.asString(callee); } }
private static boolean hasOneSymbolLiteralOperand(BinaryExpressionTree expression) { LiteralTree literal = null; if (expression.leftOperand().is(Kind.STRING_LITERAL)) { literal = (LiteralTree) expression.leftOperand(); } else if (expression.rightOperand().is(Kind.STRING_LITERAL)) { literal = (LiteralTree) expression.rightOperand(); } return literal != null && literal.value().length() == 3; } }
protected boolean isSelectorObject(ExpressionTree expressionTree) { if (isDirectJQuerySelectorObject(expressionTree)){ return true; } if (expressionTree.is(Tree.Kind.CALL_EXPRESSION) && ((CallExpressionTree)expressionTree).callee().is(Tree.Kind.DOT_MEMBER_EXPRESSION)){ DotMemberExpressionTree callee = (DotMemberExpressionTree) ((CallExpressionTree)expressionTree).callee(); return isSelectorObject(callee.object()) && isJQuerySelectorMethod(callee.property()); } return false; }
private static boolean isOneOntoOneShifting(BinaryExpressionTree tree) { return tree.is(Kind.LEFT_SHIFT) && tree.leftOperand().is(Kind.NUMERIC_LITERAL) && "1".equals(((LiteralTree) tree.leftOperand()).value()); }
private static IdentifierTree callee(CallExpressionTree tree) { ExpressionTree callee = tree.callee(); while (callee.is(Tree.Kind.DOT_MEMBER_EXPRESSION)) { callee = ((MemberExpressionTree) callee).object(); } if (callee.is(Tree.Kind.IDENTIFIER_REFERENCE) && !callee.equals(tree.callee())) { return (IdentifierTree) callee; } return null; }
private static boolean isNewCollectionCreation(ExpressionTree expression) { if (expression.is(Kind.ARRAY_LITERAL)) { return true; } if (expression.is(Kind.CALL_EXPRESSION)) { return isCollectionConstructor(((CallExpressionTree) expression).callee()); } if (expression.is(Kind.NEW_EXPRESSION)) { return isCollectionConstructor(((NewExpressionTree) expression).expression()); } return false; }
private static boolean hasObjectOrArrayAttribute(ObjectLiteralTree objectLiteral) { for (Tree property : objectLiteral.properties()) { if (property.is(Kind.PAIR_PROPERTY) && ((PairPropertyTree) property).value().is(Kind.ARRAY_LITERAL, Kind.OBJECT_LITERAL)) { return true; } } return false; }
private static boolean isUpdateOnOneWithAssign(ExpressionTree update) { if (update.is(PLUS_ASSIGNMENT, MINUS_ASSIGNMENT)) { ExpressionTree rightExpression = ((AssignmentExpressionTree) update).expression(); return rightExpression.is(NUMERIC_LITERAL) && "1".equals(((LiteralTree) rightExpression).value()); } return false; } }
private void checkForImmediatelyInvokedFunction(ExpressionTree callee) { Kind[] funcExprKinds = {Kind.FUNCTION_EXPRESSION, Kind.GENERATOR_FUNCTION_EXPRESSION}; boolean directFunctionCallee = callee.is(funcExprKinds); boolean parenthesisedFunctionCallee = callee.is(Kind.PARENTHESISED_EXPRESSION) && ((ParenthesisedExpressionTree) callee).expression().is(funcExprKinds); if (directFunctionCallee || parenthesisedFunctionCallee){ this.immediatelyInvokedFunctionExpression = true; } }
@Override public void visitIdentifier(IdentifierTree tree) { if (tree.is(Kind.IDENTIFIER_REFERENCE)) { identifier = tree; } }
private static IdentifierTree callee(CallExpressionTree tree) { ExpressionTree callee = tree.callee(); while (callee.is(Tree.Kind.DOT_MEMBER_EXPRESSION)) { callee = ((MemberExpressionTree) callee).object(); } if (callee.is(Tree.Kind.IDENTIFIER_REFERENCE) && !callee.equals(tree.callee())) { return (IdentifierTree) callee; } return null; }
private static boolean hasObjectOrArrayAttribute(ObjectLiteralTree objectLiteral) { for (Tree property : objectLiteral.properties()) { if (property.is(Kind.PAIR_PROPERTY) && ((PairPropertyTree) property).value().is(Kind.ARRAY_LITERAL, Kind.OBJECT_LITERAL)) { return true; } } return false; }
private static boolean isUpdateOnOneWithAssign(ExpressionTree update) { if (update.is(Tree.Kind.PLUS_ASSIGNMENT, Tree.Kind.MINUS_ASSIGNMENT)) { ExpressionTree rightExpression = ((AssignmentExpressionTree) update).expression(); return rightExpression.is(Tree.Kind.NUMERIC_LITERAL) && "1".equals(((LiteralTree) rightExpression).value()); } return false; } }