public Resources analyze(Set<Path> projectClassPaths, Set<Path> projectSourcePaths, Set<String> ignoredResources) {
        lock.lock();
        try {
            projectClassPaths.forEach(this::addProjectPath);

            // analyze relevant classes
            final JobRegistry jobRegistry = JobRegistry.getInstance();
            final Set<ClassResult> classResults = new HashSet<>();

            classes.stream()
                    .filter(this::isJAXRSRootResource)
                    .filter(r -> !ignoredResources.contains(r))
                    .forEach(c -> jobRegistry.analyzeResourceClass(c, new ClassResult()));

            Pair<String, ClassResult> classResultPair;
            while ((classResultPair = jobRegistry.nextUnhandledClass()) != null) {
                final ClassResult classResult = classResultPair.getRight();

                classResults.add(classResult);
                analyzeClass(classResultPair.getLeft(), classResult);

                bytecodeAnalyzer.analyzeBytecode(classResult);
            }

            javaDocAnalyzer.analyze(projectSourcePaths, classResults);

            return resultInterpreter.interpret(classResults);
        } finally {
            lock.unlock();
        }
    }
public Resources analyze ( Set < Path > projectClassPaths , Set < Path > projectSourcePaths , Set < String > ignoredResources ) { lock . lock ( ) ; try { projectClassPaths . forEach ( this :: addProjectPath ) ; final JobRegistry jobRegistry = JobRegistry . getInstance ( ) ; final Set < ClassResult > classResults = new HashSet < > ( ) ; classes . stream ( ) . filter ( this :: isJAXRSRootResource ) . filter ( r -> ! ignoredResources . contains ( r ) ) . forEach ( c -> jobRegistry . analyzeResourceClass ( c , new ClassResult ( ) ) ) ; Pair < String , ClassResult > classResultPair ; while ( ( classResultPair = jobRegistry . nextUnhandledClass ( ) ) != null ) { final ClassResult classResult = classResultPair . getRight ( ) ; classResults . add ( classResult ) ; analyzeClass ( classResultPair . getLeft ( ) , classResult ) ; bytecodeAnalyzer . analyzeBytecode ( classResult ) ; } javaDocAnalyzer . analyze ( projectSourcePaths , classResults ) ; return resultInterpreter . interpret ( classResults ) ; } finally { lock . unlock ( ) ; } }
Analyzes all classes in the given project path.

@param projectClassPaths  The project class paths
@param projectSourcePaths The project source file paths
@param ignoredResources   The fully-qualified root resource class names to be ignored
@return The REST resource representations