@Override protected void visitSelector(String selector, CallExpressionTree tree) { Matcher matcher = elementUsedWithClassSelectorPattern.matcher(selector); // ignore 2 parameters to not consider such cases: $("div.className", someContext) if (tree.argumentClause().arguments().size() == 1 && matcher.matches()) { addIssue(tree, String.format(MESSAGE, matcher.group(1))); } } }
@Override public void visitCallExpression(CallExpressionTree tree) { if (!isChainedCall(tree) && callExpressionWasLikelyIntended(tree.argumentClause())) { int calleeLastLine = tree.callee().lastToken().endLine(); int argumentsFirstLine = tree.argumentClause().firstToken().line(); if (calleeLastLine != argumentsFirstLine) { addIssue(tree.argumentClause(), String.format(MESSAGE, calleeLastLine)); } } super.visitCallExpression(tree); }
/** * Returns true if the specified call has no side effects. * Returns false if the specified call has or may have side effects. */ private static boolean hasSideEffects(CallExpressionTree callExpression, ProgramState state) { SeparatedList<ExpressionTree> arguments = callExpression.argumentClause().arguments(); SymbolicValue calleeValue = state.peekStack(arguments.size()); if (calleeValue instanceof BuiltInFunctionSymbolicValue) { BuiltInFunctionSymbolicValue builtInFunction = (BuiltInFunctionSymbolicValue) calleeValue; return builtInFunction.hasSideEffect(); } return true; }
@Override public void visitCallExpression(CallExpressionTree tree) { if (tree.types().contains(ObjectType.FrameworkType.JQUERY_SELECTOR_OBJECT)) { SeparatedList<ExpressionTree> parameters = tree.argumentClause().arguments(); if (!parameters.isEmpty() && parameters.get(0).is(Tree.Kind.STRING_LITERAL)) { String value = ((LiteralTree) parameters.get(0)).value(); value = value.substring(1, value.length() - 1).trim(); visitSelector(value, tree); } } super.visitCallExpression(tree); }
@Override public void visitCallExpression(CallExpressionTree tree) { ExpressionTree callee = tree.callee(); if (callee.is(Kind.IDENTIFIER_REFERENCE) && "eval".equals(((IdentifierTree) callee).name()) && atLeastOneArgumentNotLiteral(tree.argumentClause())) { addIssue(callee, MESSAGE); } super.visitCallExpression(tree); }
@Override public void visitCallExpression(CallExpressionTree tree) { IdentifierTree callee = callee(tree); if (callee != null) { checkForUpdate(callee); } else { logTestedExpression(tree.callee()); } scan(tree.argumentClause()); }
/** * Same as {@link #visitNewExpression(NewExpressionTree)}, without the "new". */ @Override public void visitCallExpression(CallExpressionTree tree) { if (isFunctionConstructorWithPossibleInjection(tree.callee(), tree.argumentClause())) { addIssue(tree.callee(), MESSAGE); } super.visitCallExpression(tree); }
private static boolean isIndexOfCall(ExpressionTree expression) { if (expression.is(Kind.CALL_EXPRESSION)) { CallExpressionTree callExpr = (CallExpressionTree) expression; if (callExpr.argumentClause().arguments().size() == 1 && callExpr.callee().is(Kind.DOT_MEMBER_EXPRESSION)) { DotMemberExpressionTree memberExpr = (DotMemberExpressionTree) ((CallExpressionTree) expression).callee(); return "indexOf".equals(memberExpr.property().name()); } } return false; }
private void visitSetMethodCall(CallExpressionTree tree) { Tree firstArgument = tree.argumentClause().arguments().get(0); if (firstArgument.is(Kind.OBJECT_LITERAL)) { checkForSpaceInPropertyNames((ObjectLiteralTree) firstArgument); } if (firstArgument.is(Kind.STRING_LITERAL)) { checkString(firstArgument); } }
@Override public void visitCallExpression(CallExpressionTree callExpression) { List<String> argumentNames = names(callExpression.argumentClause().arguments()); if (argumentNames != null) { FunctionTree functionDeclaration = functionDeclaration(callExpression); if (functionDeclaration != null) { List<String> parameterNames = names(parameters(functionDeclaration)); if (parameterNames != null && haveSameNamesAndDifferentOrders(argumentNames, parameterNames)) { addIssue(callExpression.argumentClause(), message(functionDeclaration)) .secondary(functionDeclaration.parameterClause()); } } } super.visitCallExpression(callExpression); }
private static LiteralTree getSelectorParameter(CallExpressionTree tree) { SeparatedList<ExpressionTree> parameters = tree.argumentClause().arguments(); if (parameters.size() == 1 && parameters.get(0).is(Tree.Kind.STRING_LITERAL) && !isElementCreation((LiteralTree) parameters.get(0))) { return (LiteralTree) parameters.get(0); } return null; }
@Override public void beforeBlockElement(ProgramState currentState, Tree element, ProgramPoint programPoint) { if (element.is(Kind.CALL_EXPRESSION)) { CallExpressionTree callExpression = (CallExpressionTree) element; SeparatedList<ExpressionTree> arguments = callExpression.argumentClause().arguments(); SymbolicValue calleeValue = currentState.peekStack(arguments.size()); if (calleeValue instanceof BuiltInFunctionSymbolicValue) { IntFunction<Constraint> signature = ((BuiltInFunctionSymbolicValue) calleeValue).signature(); if (signature != null) { check(signature, currentState, arguments); } } } }
private void checkArgumentToBeFunctionWithReturn(DotMemberExpressionTree callee, int argumentIndex, ProgramState currentState) { Tree parent = callee.parent(); if (parent.is(Kind.CALL_EXPRESSION)) { CallExpressionTree callExpressionTree = (CallExpressionTree) parent; if (callExpressionTree.argumentClause().arguments().size() > argumentIndex) { Tree argument = callExpressionTree.argumentClause().arguments().get(argumentIndex); if (argument.is(Kind.FUNCTION_EXPRESSION, Kind.ARROW_FUNCTION) && !hasReturnWithValue((FunctionTree)argument) && !isAsyncFunction((FunctionTree) argument)) { addUniqueIssue(functionToken((FunctionTree) argument), MESSAGE); } else if (argument.is(Kind.IDENTIFIER_REFERENCE)) { checkArgumentIdentifier((IdentifierTree) argument, currentState); } } } }
@Override public void visitCallExpression(CallExpressionTree tree) { if (isParseIntCall(tree.callee()) && tree.argumentClause().arguments().size() == 1) { addIssue(tree.callee(), MESSAGE); } super.visitCallExpression(tree); }
@Override public void visitCallExpression(CallExpressionTree tree) { if (tree.types().contains(Type.Kind.BACKBONE_MODEL) && !tree.argumentClause().arguments().isEmpty()) { Tree parameter = tree.argumentClause().arguments().get(0); if (parameter.is(Kind.OBJECT_LITERAL)) { PairPropertyTree defaultsProp = Backbone.getModelProperty((ObjectLiteralTree) parameter, "defaults"); if (defaultsProp != null && defaultsProp.value().is(Kind.OBJECT_LITERAL) && hasObjectOrArrayAttribute((ObjectLiteralTree) defaultsProp.value())) { addIssue(defaultsProp.key(), MESSAGE); } } } super.visitCallExpression(tree); }
@Override public void beforeBlockElement(ProgramState currentState, Tree element, ProgramPoint programPoint) { if (element.is(Kind.CALL_EXPRESSION)) { CallExpressionTree callExpressionTree = (CallExpressionTree) element; SymbolicValue calleeSV = currentState.peekStack(callExpressionTree.argumentClause().arguments().size()); Constraint constraint = currentState.getConstraint(calleeSV); if (constraint.isIncompatibleWith(Constraint.FUNCTION)) { addUniqueIssue(callExpressionTree.callee(), MESSAGE); } } } }
private void visitDefaults(CallExpressionTree tree) { Tree parameter = tree.argumentClause().arguments().get(0); if (parameter.is(Kind.OBJECT_LITERAL)) { PairPropertyTree defaultsProp = Backbone.getModelProperty((ObjectLiteralTree) parameter, "defaults"); if (defaultsProp != null && defaultsProp.value().is(Kind.OBJECT_LITERAL)) { checkForSpaceInPropertyNames((ObjectLiteralTree) defaultsProp.value()); } } }
@Override public void visitCallExpression(CallExpressionTree tree) { if (tree.callee().is(Kind.IDENTIFIER_REFERENCE)) { IdentifierTree callee = (IdentifierTree) tree.callee(); if (callee.scope().isGlobal()) { String name = callee.name(); SeparatedList<ExpressionTree> parameters = tree.argumentClause().arguments(); if (isAmdImport(name, parameters) || isCommonJsImport(name, parameters)) { addIssue(tree.callee(), String.format(MESSAGE, name)); } } } }
@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 visitCallExpression(CallExpressionTree tree) { if (tree.types().contains(Type.Kind.BACKBONE_MODEL) && !tree.argumentClause().arguments().isEmpty()) { visitDefaults(tree); } if (tree.callee().is(Kind.DOT_MEMBER_EXPRESSION) && isBackboneSetMethod((DotMemberExpressionTree) tree.callee())) { visitSetMethodCall(tree); } super.visitCallExpression(tree); }