private static List<AstNode> getTestsFromLongAssignmentExpression(AstNode expression) { List<AstNode> tests = new LinkedList<>(); AstNode lastAssign = expression.getLastChild(PythonPunctuator.ASSIGN); for (AstNode node : expression.getChildren()) { if (node.is(PythonGrammar.TESTLIST_STAR_EXPR)) { tests.addAll(node.getDescendants(PythonGrammar.TEST)); } else if (node == lastAssign) { break; } } return tests; }
@Override public void visitNode(AstNode astNode) { if (isLastCaseElement(astNode)) { return; } int jumpStmtNumber = astNode.getDescendants(JUMP_NODES).size(); if (jumpStmtNumber < 2) { AstNode directive = astNode.getLastChild(); visitLastDirective(astNode, directive); } }
private static Token getPreviousToken(AstNode node) { AstNode result = node.getPreviousAstNode(); while (result != null && !result.hasToken()) { while (result != null && !result.hasToken()) { result = result.getPreviousAstNode(); } while (result != null && result.getLastChild() != null) { result = result.getLastChild(); } } return result == null ? null : result.getToken(); }
private AstNode getBooleanLiteralFromUnaryExpression(AstNode unaryExpression) { AstNode boolLiteral = null; if (unaryExpression.getFirstChild().is(CSharpPunctuator.EXCLAMATION)) { AstNode expr = unaryExpression.getLastChild(); if (isBooleanLiteral(expr)) { boolLiteral = expr; } } return boolLiteral; }
public static String getName(AstNode classDefNode) { Preconditions.checkArgument(classDefNode.is(FlexGrammar.CLASS_DEF)); return classDefNode.getFirstChild(FlexGrammar.CLASS_NAME) .getFirstChild(FlexGrammar.CLASS_IDENTIFIERS) .getLastChild() .getTokenValue(); }
private static AstNode getLiteralFromUnaryExpression(AstNode unaryExpression) { AstNode boolLiteral = null; if (unaryExpression.getFirstChild().is(PHPPunctuator.BANG)) { AstNode expr = unaryExpression.getLastChild(); if (isBooleanLiteral(expr)) { boolLiteral = expr; } } return boolLiteral; }
private boolean isSimpleFunctionCall(AstNode memberExpr, AstNode identifierNode) { return identifierNode.isNot(PHPKeyword.NAMESPACE, PHPGrammar.VARIABLE_WITHOUT_OBJECTS, PHPGrammar.PARENTHESIS_EXPRESSION) && memberExpr.getNumberOfChildren() == 2 && memberExpr.getLastChild().is(PHPGrammar.FUNCTION_CALL_PARAMETER_LIST); }
private static boolean isExtendingEvent(AstNode classDef) { AstNode inheritenceNode = classDef.getFirstChild(FlexGrammar.INHERITENCE); if (inheritenceNode != null && inheritenceNode.getFirstChild(FlexKeyword.EXTENDS) != null) { AstNode qualifiedId = inheritenceNode.getFirstChild(FlexGrammar.TYPE_EXPR).getLastChild(); if (qualifiedId.is(FlexGrammar.QUALIFIED_IDENTIFIER) && EVENT_TYPE_NAME.equals(qualifiedId.getTokenValue())) { return true; } } return false; }
private static boolean isExtendingEvent(AstNode classDef) { AstNode inheritenceNode = classDef.getFirstChild(FlexGrammar.INHERITENCE); if (inheritenceNode != null && inheritenceNode.getFirstChild(FlexKeyword.EXTENDS) != null) { AstNode qualifiedId = inheritenceNode.getFirstChild(FlexGrammar.TYPE_EXPR).getLastChild(); if (qualifiedId.is(FlexGrammar.QUALIFIED_IDENTIFIER) && EVENT_TYPE_NAME.equals(qualifiedId.getTokenValue())) { return true; } } return false; }
private boolean returnsVoid(AstNode functionDef) { AstNode returnType = functionDef .getFirstChild(FlexGrammar.FUNCTION_COMMON) .getFirstChild(FlexGrammar.FUNCTION_SIGNATURE) .getFirstChild(FlexGrammar.RESULT_TYPE); if (returnType == null) { return true; } return returnType.getLastChild().is(FlexKeyword.VOID) ? true : false; }
private static boolean returnsVoid(AstNode functionDef) { AstNode returnType = functionDef .getFirstChild(FlexGrammar.FUNCTION_COMMON) .getFirstChild(FlexGrammar.FUNCTION_SIGNATURE) .getFirstChild(FlexGrammar.RESULT_TYPE); if (returnType == null) { return true; } return returnType.getLastChild().is(FlexKeyword.VOID) ? true : false; }
private void getCountersFromListExpression(Set<String> counters, AstNode initialiserExpr) { for (AstNode assignmentExpr : initialiserExpr.getChildren(FlexGrammar.ASSIGNMENT_EXPR_NO_IN)) { AstNode exprFirstChild = assignmentExpr.getFirstChild(); if (assignmentExpr.hasDirectChildren(FlexGrammar.ASSIGNMENT_OPERATOR)) { counters.add(Expression.exprToString(exprFirstChild)); } else if (exprFirstChild.is(FlexGrammar.UNARY_EXPR)) { counters.add(Expression.exprToString(exprFirstChild.getLastChild())); } else if (exprFirstChild.is(FlexGrammar.POSTFIX_EXPR)) { counters.add(Expression.exprToString(exprFirstChild.getFirstChild())); } } }
private static void getCountersFromListExpression(Set<String> counters, AstNode initialiserExpr) { for (AstNode assignmentExpr : initialiserExpr.getChildren(FlexGrammar.ASSIGNMENT_EXPR_NO_IN)) { AstNode exprFirstChild = assignmentExpr.getFirstChild(); if (assignmentExpr.hasDirectChildren(FlexGrammar.ASSIGNMENT_OPERATOR)) { counters.add(Expression.exprToString(exprFirstChild)); } else if (exprFirstChild.is(FlexGrammar.UNARY_EXPR)) { counters.add(Expression.exprToString(exprFirstChild.getLastChild())); } else if (exprFirstChild.is(FlexGrammar.POSTFIX_EXPR)) { counters.add(Expression.exprToString(exprFirstChild.getFirstChild())); } } }
@Override public void visitNode(AstNode astNode) { AstNode lastAstNode = astNode.getLastChild(); if (lastAstNode.getFirstChild().is(FlexGrammar.STATEMENT) && lastAstNode.getFirstChild().getFirstChild().isNot(FlexGrammar.BREAK_STATEMENT, FlexGrammar.RETURN_STATEMENT, FlexGrammar.THROW_STATEMENT)) { getContext().createLineViolation(this, "Last statement in this switch-clause should be an unconditional break.", Iterables.getLast(astNode.getChildren(FlexGrammar.CASE_LABEL))); } }
@Override public void visitNode(AstNode astNode) { if (astNode.getNumberOfChildren() > 1 && isOnEnterFrame(astNode.getFirstChild()) && isFunctionExpr(astNode.getLastChild())) { getContext().createLineViolation(this, "Refactor this code to remove the use of \"onEnterFrame\" event handler.", astNode); } }
@Override public void visitNode(AstNode node) { if (node.hasParent(PlSqlGrammar.VARIABLE_DECLARATION)) { AstNode datatype = node.getParent().getFirstChild(PlSqlGrammar.DATATYPE); AstNode expression = node.getLastChild(); if (expression.is(PlSqlGrammar.METHOD_CALL) && !datatype.getTokenValue().equals(expression.getTokenValue())) { addLineIssue(getLocalizedMessage(CHECK_KEY), node.getTokenLine()); } } }
public FormalParametersListTreeImpl prependNewFormalParameter(VariableTreeImpl variable, Optional<AstNode> rest) { if (rest.isPresent()) { AstNode comma = rest.get().getFirstChild(JavaPunctuator.COMMA); FormalParametersListTreeImpl partial = (FormalParametersListTreeImpl) rest.get().getLastChild(); partial.add(0, variable); partial.prependChildren(variable, comma); return partial; } else { return new FormalParametersListTreeImpl(variable); } }
private String getCounterName(AstNode expression) { AstNode exprChild = expression.getFirstChild(); AstNode variable; if (exprChild.is(PHPGrammar.POSTFIX_EXPR)) { variable = exprChild.getFirstChild(); } else if (exprChild.is(PHPGrammar.UNARY_EXPR)) { variable = exprChild.getLastChild(); } else { variable = exprChild.getFirstChild().getFirstChild(); } return CheckUtils.getExpressionAsString(variable); }
@Override public void visitNode(AstNode node) { AstNode suite = node.getLastChild(PythonGrammar.SUITE); if (suite.getPreviousSibling().getPreviousSibling().is(PythonKeyword.ELSE)) { return; } AstNode singleIfChild = singleIfChild(suite); if (singleIfChild != null && !hasElseOrElif(singleIfChild)) { getContext().createLineViolation(this, "Merge this if statement with the enclosing one.", singleIfChild); } }
@Override public void visitNode(AstNode node) { AstNode suite = node.getLastChild(PythonGrammar.SUITE); if (suite.getPreviousSibling().getPreviousSibling().is(PythonKeyword.ELSE)) { return; } AstNode singleIfChild = singleIfChild(suite); if (singleIfChild != null && !hasElseOrElif(singleIfChild)) { addIssue(singleIfChild.getToken(), MESSAGE) .secondary(node.getFirstChild(), "enclosing"); } }