@Override public void visitAssignmentExpression(AssignmentExpressionTree tree) { // skip the variable scan(tree.expression()); }
private static boolean hasMoreThanOneValue(AssignmentExpressionTree assignment) { if (assignment.expression().is(Tree.Kind.NEW_ARRAY)) { return ((NewArrayTree) assignment.expression()).initializers().size() > 1; } return false; }
@Override public void visitNode(Tree tree) { AnnotationTree annotation = (AnnotationTree) tree; if (annotation.symbolType().is("org.springframework.security.config.annotation.web.configuration.EnableWebSecurity")) { annotation.arguments().stream() .map(DebugFeatureEnabledCheck::getDebugArgument) .filter(Objects::nonNull) .findFirst() .filter(assignment -> Boolean.TRUE.equals(ConstantUtils.resolveAsBooleanConstant(assignment.expression()))) .ifPresent(assignment -> reportIssue(assignment, MESSAGE)); } }
@Override public void visitNode(Tree tree) { ClassTree classTree = (ClassTree) tree; findRequestMappingAnnotation(classTree.modifiers()) .flatMap(SpringRequestMappingMethodCheck::findRequestMethod) .filter(SpringRequestMappingMethodCheck::hasMoreThanOneValue) .ifPresent(assignment -> reportIssue(assignment.expression(), "Consider narrowing this list of methods to one.")); classTree.members().stream() .filter(member -> member.is(Tree.Kind.METHOD)) .forEach(member -> checkMethod((MethodTree) member, classTree.symbol())); }
@CheckForNull private static ExpressionTree getInitializerOrExpression(@Nullable Tree tree) { if (tree == null) { return null; } if (tree.is(Tree.Kind.VARIABLE)) { return ((VariableTree) tree).initializer(); } else if (tree.is(Tree.Kind.ENUM_CONSTANT)) { return ((EnumConstantTree) tree).initializer(); } return ((AssignmentExpressionTree) tree).expression(); }
@Override public void visitAnnotation(AnnotationTree tree) { stack.push(null); for (ExpressionTree argument : tree.arguments()) { if (argument.is(Tree.Kind.ASSIGNMENT)) { scan(((AssignmentExpressionTree) argument).expression()); } else { scan(argument); } } stack.pop(); }
@Override public void visitAssignmentExpression(AssignmentExpressionTree tree) { super.visitAssignmentExpression(tree); if (isFileCreateTempFile(tree.expression())) { ExpressionTree variable = tree.variable(); if (variable.is(Tree.Kind.IDENTIFIER) && !symbolStack.isEmpty()) { symbolStack.peek().put(((IdentifierTree) variable).symbol(), State.CREATE_TMP_FILE); } } }
@Override public void visitAssignmentExpression(AssignmentExpressionTree tree) { scan(tree.variable()); scan(tree.expression()); }
private void buildAssignment(AssignmentExpressionTree tree) { currentBlock.elements.add(tree); build(tree.expression()); // The variable is not evaluated for simple assignment as it's only used to know where to store the value: JLS8-15.26 if (!ExpressionUtils.isSimpleAssignment(tree)) { build(tree.variable()); } }
private static boolean shouldVerify(AssignmentExpressionTree assignment) { if (assignment.expression().is(Tree.Kind.NEW_CLASS) && assignment.variable().is(Tree.Kind.IDENTIFIER)) { IdentifierTree identifier = (IdentifierTree) assignment.variable(); boolean isMethodVariable = identifier.symbol().isVariableSymbol() && identifier.symbol().owner().isMethodSymbol(); boolean isSupportedClass = CLASSES.stream().anyMatch(identifier.symbolType()::isSubtypeOf) || CLASSES.stream().anyMatch(assignment.expression().symbolType()::isSubtypeOf); return isMethodVariable && isSupportedClass; } return false; }
private void checkCookieBuilder(AssignmentExpressionTree assignment) { if (assignment.expression().is(Tree.Kind.METHOD_INVOCATION) && (assignment.variable().is(Tree.Kind.IDENTIFIER) || assignment.variable().is(Tree.Kind.MEMBER_SELECT))) { MethodInvocationTree mit = (MethodInvocationTree) assignment.expression(); VariableSymbol variableSymbol = getVariableSymbol(assignment); if (variableSymbol != null) { addToIgnoredVariables(variableSymbol, mit); } } }
@Override public void visitAssignmentExpression(AssignmentExpressionTree tree) { if (!stopInspection && tree.variable().is(Tree.Kind.IDENTIFIER) && usages.contains(tree.variable())) { dynamicString |= isDynamicString(methodInvocationTree, tree.expression(), currentlyChecking); } super.visitAssignmentExpression(tree); }
private void checkAssignment(AssignmentExpressionTree tree) { if (isFileNameVariable(getVariableIdentifier(tree)) && !isPartOfAnnotation(tree)) { checkExpression(tree.expression()); } }
@Override public void visitAssignmentExpression(AssignmentExpressionTree aet) { if(aet.is(Tree.Kind.ASSIGNMENT)) { Type varType = aet.symbolType(); ExpressionTree expr = aet.expression(); checkExpression(varType, expr); } super.visitAssignmentExpression(aet); }
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 checkCollectionAssignments(List<IdentifierTree> usages) { for (IdentifierTree usage : usages) { Tree parentTree = usage.parent(); if (parentTree.is(Tree.Kind.ASSIGNMENT)) { AssignmentExpressionTree assignment = (AssignmentExpressionTree) parentTree; ExpressionTree expression = assignment.expression(); if (usage.equals(assignment.variable()) && !expression.is(Tree.Kind.NULL_LITERAL) && isUnserializableCollection(expression.symbolType())) { reportIssue(usage); } } } }
private void checkAssignment(AssignmentExpressionTree assignment) { checkCookieBuilder(assignment); if (shouldVerify(assignment)) { categorizeBasedOnConstructor((NewClassTree) assignment.expression(), (VariableSymbol) ((IdentifierTree) assignment.variable()).symbol()); } }
@Override public void visitIfStatement(IfStatementTree tree) { super.visitIfStatement(tree); ExpressionTree condition = tree.condition(); if (condition.is(Tree.Kind.ASSIGNMENT) && EQUALITY_RELATIONAL_OPERATORS.contains(((AssignmentExpressionTree) condition).expression().kind())) { raiseIssue(((AssignmentExpressionTree) condition).operatorToken().line(), tree); } }
@Override public void visitAssignmentExpression(AssignmentExpressionTree tree) { //Ignore assignment to the identifier if (!isIdentifierWithSameName(tree.variable())) { scan(tree.variable()); } scan(tree.expression()); }
@Override public void visitAssignmentExpression(AssignmentExpressionTree tree) { if (tree.variable().symbolType().isSubtypeOf(JAVA_UTIL_MAP)) { checkNewMap(tree.expression(), hasEnumKey(tree.variable().symbolType())); } else { super.visitAssignmentExpression(tree); } }