@Override public boolean visit(MethodInvocation node) { IMethodBinding methodBinding = node.resolveMethodBinding(); ITypeBinding declaringClass = methodBinding.getDeclaringClass(); IMethodBinding methodDeclaration = methodBinding.getMethodDeclaration(); String denyToSrcLocation = getSourceLocation(methodBinding, declaringClass); if (denyToSrc != null && denyToSrcLocation != null && !denyToSrc.matcher(denyToSrcLocation).find()) { return true; } String declaringClassName = declaringClass.getName(); String declaringClassPackage = declaringClass.getPackage() == null ? "" : declaringClass.getPackage().getName() + "."; String methodDeclarationName = methodDeclaration.getName(); String methodCall = declaringClassPackage + declaringClassName + "#" + methodDeclarationName; if (denyTo.matcher(methodCall).matches()) { String txt = createWarningText( this.acu.getFullyQualifiedClassName(), methodCall, this.acu.getSourceLocation(), denyToSrcLocation); this.acu.addMarker( "Method dependency " + txt, this.acu.getCompilationUnit().getLineNumber(node.getStartPosition()), IMarker.SEVERITY_WARNING); } return true; }
private boolean declaredInSamePackage( IMethodBinding methodBinding1, IMethodBinding methodBinding2) { final ITypeBinding declaringClass1 = methodBinding1.getDeclaringClass(); final ITypeBinding declaringClass2 = methodBinding2.getDeclaringClass(); return declaringClass1.getPackage().equals(declaringClass2.getPackage()); }