private static boolean isZeroLiteralValue(@Nullable ExpressionTree expressionTree) { if (expressionTree == null) { return false; } Integer integer = LiteralUtils.intLiteralValue(expressionTree); return integer != null && integer == 0; }
private static boolean isZeroLiteralValue(@Nullable ExpressionTree expressionTree) { if (expressionTree == null) { return false; } Integer integer = LiteralUtils.intLiteralValue(expressionTree); return integer != null && integer == 0; }
private static Integer eval(ExpressionTree expression, Iterable<ForLoopInitializer> initializers) { Integer intLiteralValue = LiteralUtils.intLiteralValue(expression); if (intLiteralValue == null) { for (ForLoopInitializer initializer : initializers) { if (initializer.hasSameIdentifier(expression)) { intLiteralValue = initializer.value(); } } } return intLiteralValue; }
@CheckForNull public static Integer intLiteralValue(ExpressionTree expression) { if (expression.is(Tree.Kind.INT_LITERAL)) { return intLiteralValue((LiteralTree) expression); } if (expression.is(Tree.Kind.UNARY_MINUS, Tree.Kind.UNARY_PLUS)) { UnaryExpressionTree unaryExp = (UnaryExpressionTree) expression; Integer subExpressionIntValue = intLiteralValue(unaryExp.expression()); return expression.is(Tree.Kind.UNARY_MINUS) ? minus(subExpressionIntValue) : subExpressionIntValue; } return null; }
private Integer eval(ExpressionTree expression, Iterable<ForLoopInitializer> initializers) { Integer intLiteralValue = LiteralUtils.intLiteralValue(expression); if (intLiteralValue == null) { for (ForLoopInitializer initializer : initializers) { if (initializer.hasSameIdentifier(expression)) { intLiteralValue = initializer.value(); } } } return intLiteralValue; }
private static Integer eval(ExpressionTree expression, Iterable<ForLoopInitializer> initializers) { Integer intLiteralValue = LiteralUtils.intLiteralValue(expression); if (intLiteralValue == null) { for (ForLoopInitializer initializer : initializers) { if (initializer.hasSameIdentifier(expression)) { intLiteralValue = initializer.value(); } } } return intLiteralValue; }
@CheckForNull public static Integer intLiteralValue(ExpressionTree expression) { if (expression.is(Tree.Kind.INT_LITERAL)) { return intLiteralValue((LiteralTree) expression); } if (expression.is(Tree.Kind.UNARY_MINUS, Tree.Kind.UNARY_PLUS)) { UnaryExpressionTree unaryExp = (UnaryExpressionTree) expression; Integer subExpressionIntValue = intLiteralValue(unaryExp.expression()); return expression.is(Tree.Kind.UNARY_MINUS) ? minus(subExpressionIntValue) : subExpressionIntValue; } return null; }
private static boolean setValueIsSameAsDefaultValue(@Nullable Object defaultValue, Tree valueSet) { if (valueSet.is(Tree.Kind.STRING_LITERAL)) { return LiteralUtils.trimQuotes(((LiteralTree) valueSet).value()).equals(defaultValue); } else if (valueSet.is(Tree.Kind.INT_LITERAL)) { Integer intLiteralValue = LiteralUtils.intLiteralValue((LiteralTree) valueSet); return intLiteralValue != null && intLiteralValue.equals(defaultValue); } return false; }
@CheckForNull public static Integer intLiteralValue(ExpressionTree expression) { if (expression.is(Tree.Kind.INT_LITERAL)) { return intLiteralValue((LiteralTree) expression); } if (expression.is(Tree.Kind.UNARY_MINUS, Tree.Kind.UNARY_PLUS)) { UnaryExpressionTree unaryExp = (UnaryExpressionTree) expression; Integer subExpressionIntValue = intLiteralValue(unaryExp.expression()); return expression.is(Tree.Kind.UNARY_MINUS) ? minus(subExpressionIntValue) : subExpressionIntValue; } return null; }
@CheckForNull public static Integer intLiteralValue(ExpressionTree expression) { if (expression.is(Tree.Kind.INT_LITERAL)) { return intLiteralValue((LiteralTree) expression); } if (expression.is(Tree.Kind.UNARY_MINUS, Tree.Kind.UNARY_PLUS)) { UnaryExpressionTree unaryExp = (UnaryExpressionTree) expression; Integer subExpressionIntValue = intLiteralValue(unaryExp.expression()); return expression.is(Tree.Kind.UNARY_MINUS) ? minus(subExpressionIntValue) : subExpressionIntValue; } return null; }
private static boolean setValueIsSameAsDefaultValue(@Nullable Object defaultValue, Tree valueSet) { if (valueSet.is(Tree.Kind.STRING_LITERAL)) { return LiteralUtils.trimQuotes(((LiteralTree) valueSet).value()).equals(defaultValue); } else if (valueSet.is(Tree.Kind.INT_LITERAL)) { Integer intLiteralValue = LiteralUtils.intLiteralValue((LiteralTree) valueSet); return intLiteralValue != null && intLiteralValue.equals(defaultValue); } return false; }
@Override public void visitMethodInvocation(MethodInvocationTree mit) { if (keyGenInit.matches(mit) || keyPairGenInitialize.matches(mit)) { Integer minKeySize = algorithmKeySizeMap.get(this.algorithm); if (minKeySize != null) { Integer keySize = LiteralUtils.intLiteralValue(mit.arguments().get(0)); if (keySize != null && keySize < minKeySize) { reportIssue(mit, "Use a key length of at least " + minKeySize + " bits."); } } } } }
@Override public void visitMethodInvocation(MethodInvocationTree mit) { if (keyGenInit.matches(mit) || keyPairGenInitialize.matches(mit)) { Integer minKeySize = algorithmKeySizeMap.get(this.algorithm); if (minKeySize != null) { Integer keySize = LiteralUtils.intLiteralValue(mit.arguments().get(0)); if (keySize != null && keySize < minKeySize) { reportIssue(mit, "Use a key length of at least " + minKeySize + " bits."); } } } } }
private static ForLoopInitializer assignmentInitializer(ExpressionTree expression) { if (expression.is(Tree.Kind.ASSIGNMENT)) { AssignmentExpressionTree assignment = (AssignmentExpressionTree) expression; ExpressionTree variable = assignment.variable(); if (variable.is(Tree.Kind.IDENTIFIER)) { return new ForLoopInitializer((IdentifierTree) variable, intLiteralValue(assignment.expression())); } } return null; }
private static ForLoopInitializer assignmentInitializer(ExpressionTree expression) { if (expression.is(Tree.Kind.ASSIGNMENT)) { AssignmentExpressionTree assignment = (AssignmentExpressionTree) expression; ExpressionTree variable = assignment.variable(); if (variable.is(Tree.Kind.IDENTIFIER)) { return new ForLoopInitializer((IdentifierTree) variable, intLiteralValue(assignment.expression())); } } return null; }
private static ForLoopInitializer assignmentInitializer(ExpressionTree expression) { if (expression.is(Tree.Kind.ASSIGNMENT)) { AssignmentExpressionTree assignment = (AssignmentExpressionTree) expression; ExpressionTree variable = assignment.variable(); if (variable.is(Tree.Kind.IDENTIFIER)) { return new ForLoopInitializer((IdentifierTree) variable, intLiteralValue(assignment.expression())); } } return null; }
private void checkModulusAndIntLiteral(ExpressionTree operand1, ExpressionTree operand2) { if (operand1.is(Tree.Kind.REMAINDER)) { BinaryExpressionTree modulusExp = (BinaryExpressionTree) operand1; Integer intValue = LiteralUtils.intLiteralValue(operand2); ExpressionTree leftOperand = modulusExp.leftOperand(); ExpressionTree rightOperand = modulusExp.rightOperand(); boolean usesMethodParam = isMethodParameter(leftOperand) || isMethodParameter(rightOperand); boolean usesSize = isSizeAccessor(leftOperand) || isSizeAccessor(rightOperand); if (intValue != null && intValue != 0 && usesMethodParam && !usesSize) { String sign = intValue > 0 ? "positive" : "negative"; addIssue(operand1, "The results of this modulus operation may not be " + sign + "."); } } }
private void checkModulusAndIntLiteral(ExpressionTree operand1, ExpressionTree operand2) { if (operand1.is(Tree.Kind.REMAINDER)) { BinaryExpressionTree modulusExp = (BinaryExpressionTree) operand1; Integer intValue = LiteralUtils.intLiteralValue(operand2); ExpressionTree leftOperand = modulusExp.leftOperand(); ExpressionTree rightOperand = modulusExp.rightOperand(); boolean usesMethodParam = isMethodParameter(leftOperand) || isMethodParameter(rightOperand); boolean usesSize = isSizeAccessor(leftOperand) || isSizeAccessor(rightOperand); if (intValue != null && intValue != 0 && usesMethodParam && !usesSize) { String sign = intValue > 0 ? "positive" : "negative"; reportIssue(modulusExp.operatorToken(), "The results of this modulus operation may not be " + sign + "."); } } }
private void checkModulusAndIntLiteral(ExpressionTree operand1, ExpressionTree operand2) { if (operand1.is(Tree.Kind.REMAINDER)) { BinaryExpressionTree modulusExp = (BinaryExpressionTree) operand1; Integer intValue = LiteralUtils.intLiteralValue(operand2); ExpressionTree leftOperand = modulusExp.leftOperand(); ExpressionTree rightOperand = modulusExp.rightOperand(); boolean usesMethodParam = isMethodParameter(leftOperand) || isMethodParameter(rightOperand); boolean usesSize = isSizeAccessor(leftOperand) || isSizeAccessor(rightOperand); if (intValue != null && intValue != 0 && usesMethodParam && !usesSize) { String sign = intValue > 0 ? "positive" : "negative"; reportIssue(modulusExp.operatorToken(), "The results of this modulus operation may not be " + sign + "."); } } }
private static ForLoopIncrement assignmentIncrement(AssignmentExpressionTree assignmentExpression) { ExpressionTree expression = assignmentExpression.expression(); ExpressionTree variable = assignmentExpression.variable(); if (variable.is(Tree.Kind.IDENTIFIER) && expression.is(Tree.Kind.PLUS, Tree.Kind.MINUS)) { BinaryExpressionTree binaryExp = (BinaryExpressionTree) expression; Integer increment = intLiteralValue(binaryExp.rightOperand()); if (increment != null && isSameIdentifier((IdentifierTree) variable, binaryExp.leftOperand())) { increment = expression.is(Tree.Kind.MINUS) ? minus(increment) : increment; return increment(variable, increment); } return new ForLoopIncrement((IdentifierTree) variable, null); } return null; }