Example #1
0
  private void check(IResource resource, Architecture architecture, boolean reextractDependencies)
      throws CoreException {
    if (resource instanceof IFile && resource.getName().endsWith(".java")) {
      final IFile file = (IFile) resource;
      MarkerUtils.deleteMarkers(file);

      final ICompilationUnit unit = ((ICompilationUnit) JavaCore.create((IFile) resource));

      /* We only consider the units linked to source-folders */
      if (!unit.isOpen()) {
        return;
      }

      final String className = DCLUtil.getClassName(unit);

      /* We only consider the units without compilation errors*/
      if (file.findMaxProblemSeverity(IMarker.PROBLEM, true, IResource.DEPTH_INFINITE)
          == IMarker.SEVERITY_ERROR) {
        // MarkerUtils.addErrorMarker(this.getProject(), "DCLcheck has not verified class " +
        // className + " because it contains compilation errors.");
        return;
      }

      try {
        final Collection<Dependency> dependencies;
        if (reextractDependencies) {
          dependencies = DCLUtil.getDependenciesUsingAST(unit);
          architecture.updateDependencies(className, dependencies);
          DCLPersistence.persist(this.getProject(), className, dependencies);
        } else {
          dependencies = architecture.getDependencies(className);
        }

        for (DependencyConstraint dc : architecture.getDependencyConstraints()) {
          Collection<ArchitecturalDrift> result =
              dc.validate(
                  className,
                  architecture.getModules(),
                  architecture.getProjectClasses(),
                  dependencies,
                  this.getProject());
          if (result != null && !result.isEmpty()) {
            for (ArchitecturalDrift ad : result) {
              MarkerUtils.addMarker(file, ad);
            }
          }
        }
      } catch (Exception e) {
        MarkerUtils.addErrorMarker(
            this.getProject(), "There was a problem in extracting dependencies from " + className);
        CoreException ce = new CoreException(Status.CANCEL_STATUS);
        ce.setStackTrace(e.getStackTrace());
        throw ce;
      }
    }
  }
Example #2
0
 private static int getProblemSeverity(Repository repository, String path) {
   IFile file = ResourceUtil.getFileForLocation(repository, path);
   if (file != null) {
     try {
       int severity = file.findMaxProblemSeverity(IMarker.PROBLEM, true, IResource.DEPTH_ONE);
       return severity;
     } catch (CoreException e) {
       // Fall back to below
     }
   }
   return IProblemDecoratable.SEVERITY_NONE;
 }
Example #3
0
 protected boolean shouldGenerate(Resource resource, IBuildContext context) {
   try {
     Iterable<Pair<IStorage, IProject>> storages =
         storage2UriMapper.getStorages(resource.getURI());
     for (Pair<IStorage, IProject> pair : storages) {
       if (pair.getFirst() instanceof IFile
           && pair.getSecond().equals(context.getBuiltProject())) {
         IFile file = (IFile) pair.getFirst();
         return file.findMaxProblemSeverity(null, true, IResource.DEPTH_INFINITE)
             != IMarker.SEVERITY_ERROR;
       }
     }
     return false;
   } catch (CoreException exc) {
     throw new WrappedException(exc);
   }
 }