public static boolean isOnPersistenceMethod(MethodInvocation node) { String expr = node.toString(); return persistenceMethods.stream().anyMatch(api -> expr.contains(api)); }
public boolean visit(MethodInvocation node) { invokedMethodNames.add(node.getName().getIdentifier()); List<Expression> arguments = node.arguments(); for(Expression argument : arguments) { processArgument(argument); } String methodInvocation = null; if(METHOD_INVOCATION_PATTERN.matcher(node.toString()).matches()) { methodInvocation = processMethodInvocation(node); } else { methodInvocation = node.toString(); } boolean builderPatternChain = false; for(String key : methodInvocationMap.keySet()) { OperationInvocation invocation = methodInvocationMap.get(key); if(key.startsWith(methodInvocation) && invocation.numberOfSubExpressions() > 15) { builderPatternChain = true; break; } } if(!builderPatternChain) { methodInvocationMap.put(methodInvocation, new OperationInvocation(cu, filePath, node)); } return super.visit(node); }
public boolean visit(MethodInvocation node) { if (!StringUtils.contains(node.toString(), ".")) { // it must be a local method. ignore. return true; } String nodeName = StringUtils.removeStart(node.toString(), "this."); List arguements = node.arguments(); List<String> resolvedParams = methodParameterGuesser(arguements); String objRef = StringUtils.substringBefore(nodeName, "." + node.getName().toString()); if (nameInstance.containsKey(objRef)) { objRef = nameInstance.get(objRef); } if (classNameToFullyQualified.containsKey(objRef)) { objRef = classNameToFullyQualified.get(objRef); } String resolvedMethodCall = objRef + "." + node.getName().toString() + "("; for (int i = 0, j = resolvedParams.size(); i < j; i++) { resolvedMethodCall += resolvedParams.get(i); if (i < j - 1) { resolvedMethodCall += ", "; } } resolvedMethodCall = resolvedMethodCall + ")"; LOG.trace("Resolved Method call: " + resolvedMethodCall); // Here is the call to blacklist processInterest(resolvedMethodCall, cu.getLineNumber(node.getStartPosition()), "Usage of", SourceType.METHOD); return true; }
private void processExpression(Expression expression, List<String> subExpressions) { if(expression instanceof MethodInvocation) { MethodInvocation invocation = (MethodInvocation)expression; if(invocation.getExpression() != null) { String expressionAsString = invocation.getExpression().toString(); String invocationAsString = invocation.toString(); String suffix = invocationAsString.substring(expressionAsString.length() + 1, invocationAsString.length()); subExpressions.add(0, suffix); processExpression(invocation.getExpression(), subExpressions); } else { subExpressions.add(0, invocation.toString()); } } else if(expression instanceof ClassInstanceCreation) { ClassInstanceCreation creation = (ClassInstanceCreation)expression; if(creation.getExpression() != null) { String expressionAsString = creation.getExpression().toString(); String invocationAsString = creation.toString(); String suffix = invocationAsString.substring(expressionAsString.length() + 1, invocationAsString.length()); subExpressions.add(0, suffix); processExpression(creation.getExpression(), subExpressions); } else { subExpressions.add(0, creation.toString()); } } }
/** * handles object.method(parameter) */ @SuppressWarnings("unchecked") @Override public boolean visit(MethodInvocation node) { if (importer.topOfContainerStack() instanceof Method) { Invocation invocation = importer.createInvocationFromMethodBinding(node.resolveMethodBinding(), node.toString().trim()); importer.createLightweightSourceAnchor(invocation, node.getName()); importer.createAccessFromExpression(node.getExpression()); invocation.setReceiver(importer.ensureStructuralEntityFromExpression(node.getExpression())); node.arguments().stream().forEach(arg -> importer.createAccessFromExpression((Expression) arg)); } return true; }
/*** * Takes the MethodInvocation, and attempts to resolve the types of objects passed into the method invocation. */ public boolean visit(MethodInvocation node) { if (!StringUtils.contains(node.toString(), ".")) { // it must be a local method. ignore. return true; } String nodeName = StringUtils.removeStart(node.toString(), "this."); List<?> arguments = node.arguments(); List<String> resolvedParams = methodParameterGuesser(arguments); String objRef = StringUtils.substringBefore(nodeName, "." + node.getName().toString()); if (nameInstance.containsKey(objRef)) { objRef = nameInstance.get(objRef); } objRef = resolveClassname(objRef); MethodType methodCall = new MethodType(objRef, node.getName().toString(), resolvedParams); processMethod(methodCall, cu.getLineNumber(node.getName().getStartPosition()), cu.getColumnNumber(node.getName().getStartPosition()), node.getName().getLength()); return super.visit(node); }
if (!StringUtils.contains(node.toString(), ".")) compilationUnit.getLineNumber(node.getName().getStartPosition()), columnNumber, length, extractDefinitionLine(node.toString())); String nodeName = StringUtils.removeStart(node.toString(), "this."); String objRef = StringUtils.substringBefore(nodeName, "." + node.getName().toString()); if (state.getNameInstance().containsKey(objRef)) columnNumber, length, extractDefinitionLine(node.toString())); processMethod(methodCall, resolutionStatus, TypeReferenceLocation.METHOD_CALL, compilationUnit.getLineNumber(node.getName().getStartPosition()), columnNumber, length, node.toString());