Ejemplo n.º 1
0
    @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());
 }