@Override public void visitExpressionStatement(ExpressionStatementTree tree) { scan(tree.expression()); }
private static boolean insideTry(ExpressionStatementTree tree) { return tree.parent().parent().is(Kind.TRY_STATEMENT); }
private static boolean isExpressionExclusion(Tree item) { if (item.is(Kind.EXPRESSION_STATEMENT)) { ExpressionStatementTree expressionStatement = (ExpressionStatementTree) item; if (expressionStatement.expression().is(Kind.IDENTIFIER_REFERENCE, Kind.UNARY_PLUS, Kind.UNARY_MINUS, Kind.STRING_LITERAL) || expressionStatement.semicolonToken() == null || expressionStatement.expression().is(Kind.COMMA_OPERATOR)) { return true; } } return false; }
@Override public void visitExpressionStatement(ExpressionStatementTree tree) { super.visitExpressionStatement(tree); checkEOS(tree, tree.semicolonToken()); }
@Override public void visitExpressionStatement(ExpressionStatementTree tree) { if (tree.expression().is(KindSet.INC_DEC_KINDS)) { scan(((UnaryExpressionTree) tree.expression()).expression()); } else { scan(tree.expression()); } }
@Override public void visitExpressionStatement(ExpressionStatementTree tree) { if (tree.expression().is(Kind.STRING_LITERAL)) { String value = ((LiteralTree) tree.expression()).value(); if ("\"use strict\"".equals(value) || "'use strict'".equals(value)) { addIssue(tree, MESSAGE); } } super.visitExpressionStatement(tree); }
private static boolean isVariableWrite(ExpressionStatementTree statement, Usage usage) { if (statement.expression().is(Kind.ASSIGNMENT)) { AssignmentExpressionTree assignment = (AssignmentExpressionTree) statement.expression(); return assignment.variable() == usage.identifierTree() && isNewCollectionCreation(assignment.expression()); } return false; }
private static boolean isElementWrite(ExpressionStatementTree statement, Usage usage) { if (statement.expression().is(KindSet.ASSIGNMENT_KINDS)) { ExpressionTree variable = ((AssignmentExpressionTree) statement.expression()).variable(); if (variable.is(Kind.BRACKET_MEMBER_EXPRESSION)) { return ((BracketMemberExpressionTree) variable).object() == usage.identifierTree(); } } return false; }
public static boolean isUnReachableCode(AstNode node) { return node != null && !node.is( Kind.ELSE_CLAUSE, Kind.FUNCTION_DECLARATION, Kind.GENERATOR_DECLARATION, Kind.CLASS_DECLARATION, EcmaScriptPunctuator.RCURLYBRACE) && !(node.is(Kind.EXPRESSION_STATEMENT) && ((ExpressionStatementTree) node).expression().is(Kind.CLASS_EXPRESSION)); }
private static boolean isWritingMethodCall(ExpressionStatementTree statement, Usage usage) { if (statement.expression().is(Kind.CALL_EXPRESSION)) { ExpressionTree callee = ((CallExpressionTree) statement.expression()).callee(); if (callee.is(Kind.DOT_MEMBER_EXPRESSION)) { DotMemberExpressionTree memberExpression = (DotMemberExpressionTree) callee; return memberExpression.object() == usage.identifierTree() && WRITING_METHODS.contains(memberExpression.property().name()); } } return false; }
@Override public void visitExpressionStatement(ExpressionStatementTree tree) { Tree expression = tree.expression(); if (expression.is(Kind.NEW_EXPRESSION)) { String message = String.format(MESSAGE, CheckUtils.asString(((NewExpressionTree) expression).expression())); addIssue(expression, message); } super.visitExpressionStatement(tree); }
private static boolean isAttrCopy(StatementTree statement) { if (statement.is(Kind.EXPRESSION_STATEMENT)) { Tree expression = ((ExpressionStatementTree) statement).expression(); if (expression.is(Kind.ASSIGNMENT)) { AssignmentExpressionTree assignment = (AssignmentExpressionTree) expression; return assignment.variable().is(Kind.BRACKET_MEMBER_EXPRESSION); } } return false; }
@Override public void visitExpressionStatement(ExpressionStatementTree tree) { ExpressionTree expression = CheckUtils.removeParenthesis(tree.expression()); if (expression.is(Kind.STRING_LITERAL)) { if (!isDirective((LiteralTree) expression)) { addIssue(tree, MESSAGE); } } else if (!expression.is(KINDS_WITH_SIDE_EFFECTS) && !isIIFE(expression) && !insideTry(tree)) { addIssue(tree, MESSAGE); } super.visitExpressionStatement(tree); }
@Override public void visitNode(Tree tree) { Tree expression = ((ExpressionStatementTree) tree).expression(); if (expression.is(Kind.CALL_EXPRESSION)) { ExpressionTree callee = ((CallExpressionTree) expression).callee(); if (callee.is(Kind.DOT_MEMBER_EXPRESSION)) { DotMemberExpressionTree memberExpression = (DotMemberExpressionTree) callee; if (memberExpression.object().types().containsOnly(Type.Kind.STRING) && !isReplaceExclusion(memberExpression.property(), ((CallExpressionTree) expression).argumentClause())) { addIssue(memberExpression.property(), String.format(MESSAGE, getVariable(memberExpression))); } } } }
@Override public void visitExpressionStatement(ExpressionStatementTree tree) { Tree expressionTree = tree.expression(); if (expressionTree.is(Kind.COMMA_OPERATOR)) { visitCommaOperatorExpression(((BinaryExpressionTree) expressionTree).leftOperand()); visitCommaOperatorExpression(((BinaryExpressionTree) expressionTree).rightOperand()); } else { while (expressionTree instanceof AssignmentExpressionTree) { AssignmentExpressionTree assignmentExpressionTree = (AssignmentExpressionTree) expressionTree; scan(assignmentExpressionTree.variable()); expressionTree = assignmentExpressionTree.expression(); } scan(expressionTree); } }