@Override public void visitBinaryExpression(BinaryExpressionTree tree) { if (tree.is(CONDITIONAL_AND, CONDITIONAL_OR) && !nestedLogicalExpressions.contains(tree)) { List<SyntaxToken> flatOperators = new ArrayList<>(); flattenLogicalExpression(0, flatOperators, tree); complexity.addComplexityWithoutNesting(flatOperators.get(0)); for (int i = 1; i < flatOperators.size(); i++) { if (!flatOperators.get(i).text().equals(flatOperators.get(i - 1).text())) { complexity.addComplexityWithoutNesting(flatOperators.get(i)); } } } super.visitBinaryExpression(tree); }
@Override public void visitBinaryExpression(BinaryExpressionTree tree) { if (tree.is(CONDITIONAL_AND, CONDITIONAL_OR) && !nestedLogicalExpressions.contains(tree)) { List<SyntaxToken> flatOperators = new ArrayList<>(); flattenLogicalExpression(0, flatOperators, tree); complexity.addComplexityWithoutNesting(flatOperators.get(0)); for (int i = 1; i < flatOperators.size(); i++) { if (!flatOperators.get(i).text().equals(flatOperators.get(i - 1).text())) { complexity.addComplexityWithoutNesting(flatOperators.get(i)); } } } super.visitBinaryExpression(tree); }
private void flattenLogicalExpression(int i, List<SyntaxToken> operators, ExpressionTree expression) { if (expression.is(CONDITIONAL_AND, CONDITIONAL_OR)) { nestedLogicalExpressions.add(expression); BinaryExpressionTree binaryExpression = (BinaryExpressionTree) expression; operators.add(i, binaryExpression.operator()); ExpressionTree leftChild = removeParenthesis(binaryExpression.leftOperand()); ExpressionTree rightChild = removeParenthesis(binaryExpression.rightOperand()); flattenLogicalExpression(i + 1, operators, rightChild); flattenLogicalExpression(i, operators, leftChild); } }
private void flattenLogicalExpression(int i, List<SyntaxToken> operators, ExpressionTree expression) { if (expression.is(CONDITIONAL_AND, CONDITIONAL_OR)) { nestedLogicalExpressions.add(expression); BinaryExpressionTree binaryExpression = (BinaryExpressionTree) expression; operators.add(i, binaryExpression.operator()); ExpressionTree leftChild = removeParenthesis(binaryExpression.leftOperand()); ExpressionTree rightChild = removeParenthesis(binaryExpression.rightOperand()); flattenLogicalExpression(i + 1, operators, rightChild); flattenLogicalExpression(i, operators, leftChild); } }