private void addIssue(AssignmentExpressionTree tree) { addIssue(tree.operatorToken(), String.format(MESSAGE, CheckUtils.asString(tree.variable()))); }
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(); } }
@Override public void visitNode(Tree tree) { AssignmentExpressionTree assignment = (AssignmentExpressionTree) tree; ExpressionTree expression = assignment.expression(); if (expression.is(Kind.UNARY_PLUS, Kind.UNARY_MINUS, Kind.LOGICAL_COMPLEMENT)) { UnaryExpressionTree unaryExpression = (UnaryExpressionTree) expression; SyntaxToken assignmentOperator = assignment.operatorToken(); SyntaxToken expressionOperator = unaryExpression.operatorToken(); if (areAdjacent(assignmentOperator, expressionOperator) && !areAdjacent(expressionOperator, unaryExpression.expression())) { String message = String.format(MESSAGE, unaryExpression.operatorToken()); addIssue(new PreciseIssue(this, new IssueLocation(assignmentOperator, expressionOperator, message))); } } super.visitNode(tree); }
private void checkBinaryOperation(ProgramState currentState, Tree element) { Type rightType = currentState.getConstraint(currentState.peekStack(0)).type(); Type leftType = currentState.getConstraint(currentState.peekStack(1)).type(); ExpressionTree leftOperand; ExpressionTree rightOperand; SyntaxToken operator; 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(); } if (element.is(PLUS_KINDS)) { checkPlus(leftOperand, rightOperand, leftType, rightType, operator); } else if (element.is(COMPARISON_KINDS)) { checkComparison(leftOperand, rightOperand, leftType, rightType, operator); } else if (element.is(ARITHMETIC_KINDS)) { checkArithmetic(leftOperand, rightOperand, leftType, rightType, operator, element.is(MINUS)); } }