private static Integer getInteger(ExpressionTree expression) { if (expression.is(NUMERIC_LITERAL)) { LiteralTree literal = (LiteralTree) expression; Integer decoded; try { decoded = Integer.decode(literal.value()); return decoded; } catch (NumberFormatException e) { return null; } } return null; }
/** * @param literalTree string literal argument of jQuery() * @return true if argument looks like HTML (e.g. "<div></div>") */ private static boolean isElementCreation(LiteralTree literalTree) { Preconditions.checkArgument(literalTree.is(Tree.Kind.STRING_LITERAL)); String value = literalTree.value(); value = value.substring(1, value.length() - 1); return value.startsWith("<") && value.endsWith(">"); }
@Override public void visitNode(Tree tree) { LiteralTree stringLiteral = (LiteralTree) tree; String value = stringLiteral.value(); int startIndex = value.indexOf("${"); int endIndex = value.indexOf('}'); if (startIndex != -1 && startIndex < endIndex) { addIssue(tree, String.format(MESSAGE, value.charAt(0))); } } }
private static int smallLiteralsNumber(List<ExpressionTree> operandList) { int shortLiteralsNum = 0; for (ExpressionTree operand : operandList) { if (operand.is(Kind.STRING_LITERAL) && ((LiteralTree) operand).value().length() < MIN_LITERAL_LENGTH) { shortLiteralsNum++; } } return shortLiteralsNum; }
private static void addImportModule(ImportDeclarationTree tree, ListMultimap<String, ImportDeclarationTree> importsByModule) { String literal = tree.fromClause().module().value(); String moduleName = literal.substring(1, literal.length() - 1); importsByModule.put(moduleName, tree); } }
@Override public void visitLiteral(LiteralTree tree) { String value = tree.value(); if (tree.is(Kind.STRING_LITERAL) && value.startsWith("\"") && value.indexOf('\'') < 0) { addIssue(tree, MESSAGE); } }
@Override public void visitLiteral(LiteralTree tree) { if (tree.is(Kind.STRING_LITERAL) && tree.value().contains("\n")) { addIssue(tree, MESSAGE); } }
private void checkString(Tree key) { if (key.is(Kind.STRING_LITERAL) && StringUtils.contains(((LiteralTree) key).value(), ' ')) { addIssue(key, MESSAGE); } }
private static boolean isDirective(LiteralTree tree) { if (tree.is(Kind.STRING_LITERAL)) { return KNOWN_DIRECTIVES.contains(trimQuotes((tree).value())); } 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; } }
@Override public void visitCallExpression(CallExpressionTree tree) { if (tree.types().contains(ObjectType.FrameworkType.JQUERY_SELECTOR_OBJECT)) { LiteralTree parameter = getSelectorParameter(tree); if (parameter != null) { String value = parameter.value(); selectors.peek().put(value, tree); } } super.visitCallExpression(tree); }
private static boolean isAllowedUsage(@Nullable ArgumentListTree arguments, Kind allowedArgument) { if (arguments != null && arguments.arguments().size() == 1) { Tree argument = arguments.arguments().get(0); if (argument.is(allowedArgument)) { return !"false".equals(((LiteralTree) argument).value()); } } 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()); }
@Override public void visitExpressionStatement(ExpressionStatementTree tree) { if (tree.expression().is(Kind.STRING_LITERAL)) { String value = ((LiteralTree) tree.expression()).value(); if ("\"use strict\"".equals(value) || "'use strict'".equals(value)) { addIssue(tree, MESSAGE); } } super.visitExpressionStatement(tree); }
@CheckForNull public static Double numericValue(ExpressionTree expression) { if (expression.is(Tree.Kind.NUMERIC_LITERAL)) { return Double.valueOf(((LiteralTree) expression).value()); } if (expression.is(Tree.Kind.UNARY_MINUS, Tree.Kind.UNARY_PLUS)) { UnaryExpressionTree unaryExp = (UnaryExpressionTree) expression; Double subExpressionIntValue = numericValue(unaryExp.expression()); return expression.is(Tree.Kind.UNARY_MINUS) ? minus(subExpressionIntValue) : subExpressionIntValue; } return null; }
@CheckForNull public static Double numericValue(ExpressionTree expression) { if (expression.is(Tree.Kind.NUMERIC_LITERAL)) { return Double.valueOf(((LiteralTree) expression).value()); } if (expression.is(Tree.Kind.UNARY_MINUS, Tree.Kind.UNARY_PLUS)) { UnaryExpressionTree unaryExp = (UnaryExpressionTree) expression; Double subExpressionIntValue = numericValue(unaryExp.expression()); return expression.is(Tree.Kind.UNARY_MINUS) ? minus(subExpressionIntValue) : subExpressionIntValue; } return null; }
private void lookForException(ExpressionTree tree) { if (tree.is(Tree.Kind.CALL_EXPRESSION)) { CallExpressionTree callExpressionTree = (CallExpressionTree) tree; if (callExpressionTree.types().contains(ObjectType.FrameworkType.JQUERY_SELECTOR_OBJECT)) { LiteralTree parameter = getSelectorParameter(callExpressionTree); if (parameter != null) { selectors.peek().remove(parameter.value(), tree); } } } }
@Override public void visitCallExpression(CallExpressionTree tree) { if (tree.types().contains(ObjectType.FrameworkType.JQUERY_SELECTOR_OBJECT)) { SeparatedList<ExpressionTree> parameters = tree.argumentClause().arguments(); if (!parameters.isEmpty() && parameters.get(0).is(Tree.Kind.STRING_LITERAL)) { String value = ((LiteralTree) parameters.get(0)).value(); value = value.substring(1, value.length() - 1).trim(); visitSelector(value, tree); } } super.visitCallExpression(tree); }
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; } }