@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 static boolean isConcatenation(AssignmentExpressionTree tree) { if (tree.is(Tree.Kind.ASSIGNMENT)) { ExpressionTree expressionTree = ExpressionUtils.skipParentheses(tree.expression()); return expressionTree.is(Tree.Kind.PLUS) && concatenateVariable(tree.variable(), (BinaryExpressionTree) expressionTree); } return tree.is(Tree.Kind.PLUS_ASSIGNMENT); }
@Override public void visitNode(Tree tree) { AssignmentExpressionTree node = (AssignmentExpressionTree) tree; if (SyntacticEquivalence.areEquivalent(node.expression(), node.variable())) { reportIssue(node.operatorToken(), "Remove or correct this useless self-assignment."); } }
@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); }
@Override public void visitAssignmentExpression(AssignmentExpressionTree assignmentTree) { ExpressionTree variable = assignmentTree.variable(); symbolFromVariable(variable) .filter(s -> s == field) .ifPresent(s -> assignmentToField = true); } }
@Override public void visitAssignmentExpression(AssignmentExpressionTree tree) { // skip the variable scan(tree.expression()); }
private void handleAssignment(Set<Symbol> out, Set<Tree> assignmentLHS, AssignmentExpressionTree element) { ExpressionTree lhs = ExpressionUtils.skipParentheses(element.variable()); if (lhs.is(Tree.Kind.IDENTIFIER)) { Symbol symbol = ((IdentifierTree) lhs).symbol(); if (isLocalVariable(symbol) && !out.contains(symbol) && (element.is(Tree.Kind.ASSIGNMENT) || isParentExpressionStatement(element))) { createIssue(element.operatorToken(), element.expression(), symbol); } assignmentLHS.add(lhs); if (element.is(Tree.Kind.ASSIGNMENT)) { out.remove(symbol); } else { out.add(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); } }
private void executeAssignement(AssignmentExpressionTree tree) { ExpressionTree variable = tree.variable(); if (variable.is(Tree.Kind.IDENTIFIER)) { // FIXME restricted to identifiers for now. ProgramState.Pop unstack = programState.unstackValue(2); SymbolicValue value = tree.is(Tree.Kind.ASSIGNMENT) ? unstack.values.get(1) : constraintManager.createSymbolicValue(tree); programState = unstack.state; programState = programState.put(((IdentifierTree) variable).symbol(), value); programState = programState.stackValue(value); } }
private static SyntaxToken operatorToken(Tree tree) { if (tree instanceof BinaryExpressionTree) { return ((BinaryExpressionTree) tree).operatorToken(); } return ((AssignmentExpressionTree) tree).operatorToken(); }
private static boolean isStringConcatenation(AssignmentExpressionTree tree) { return tree.symbolType().is("java.lang.String") && isConcatenation(tree); }
@Override public void visitAssignmentExpression(AssignmentExpressionTree tree) { Tree assignedVariable = getAssignedVariable(tree.variable()); if (assignedVariable != null) { type = getTypeFromExpression(assignedVariable, kinds); } }
@Override public void visitAssignmentExpression(AssignmentExpressionTree tree) { // skip the variable scan(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); }
@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); } }
private static SyntaxToken operatorToken(Tree tree) { if (tree instanceof BinaryExpressionTree) { return ((BinaryExpressionTree) tree).operatorToken(); } return ((AssignmentExpressionTree) tree).operatorToken(); }
private static boolean isStringConcatenation(AssignmentExpressionTree tree) { return tree.symbolType().is("java.lang.String") && isConcatenation(tree); }
@Override public void visitAssignmentExpression(AssignmentExpressionTree tree) { scan(tree.variable()); scan(tree.expression()); }
@CheckForNull private static AssignmentExpressionTree getDebugArgument(ExpressionTree expression) { if (expression.is(Tree.Kind.ASSIGNMENT)) { AssignmentExpressionTree assignment = (AssignmentExpressionTree) expression; if (assignment.variable().is(Tree.Kind.IDENTIFIER) && "debug".equals(((IdentifierTree) assignment.variable()).name())) { return assignment; } } return null; }
@Override public void visitNode(Tree tree) { AssignmentExpressionTree node = (AssignmentExpressionTree) tree; if (SyntacticEquivalence.areEquivalent(node.expression(), node.variable())) { reportIssue(node.operatorToken(), "Remove or correct this useless self-assignment."); } }