@Override public IClassPath createClassPath() { return new ClassPathImpl(); }
@Override public ICodeBaseEntry lookupResource(String resourceName) throws ResourceNotFoundException { // See if we have cached the codebase entry for this resource ICodeBaseEntry result = codeBaseEntryMap.get(resourceName); if (result == null) { // No previously resolved entry - look up the resources in the // codebases // First try application codebases result = search(appCodeBaseList, resourceName); if (result == null) { // Next try aux codebases result = search(auxCodeBaseList, resourceName); } // If not found in any codebase, then throw // ResourceNotFoundException if (result == null) { throw new ResourceNotFoundException(resourceName); } // Cache the entry for future lookups codeBaseEntryMap.put(resourceName, result); } return result; }
private static void setUpStaticDependenciesWithinFindBugs(BugReporter bugReporter) throws Exception { bugReporter.setPriorityThreshold(Priorities.LOW_PRIORITY); ClassPathImpl classPath = new ClassPathImpl(); IAnalysisCache analysisCache = ClassFactory.instance().createAnalysisCache(classPath, bugReporter); new ClassContextClassAnalysisEngine().registerWith(analysisCache); new edu.umd.cs.findbugs.classfile.engine.asm.EngineRegistrar().registerAnalysisEngines(analysisCache); new edu.umd.cs.findbugs.classfile.engine.bcel.EngineRegistrar().registerAnalysisEngines(analysisCache); new edu.umd.cs.findbugs.classfile.engine.EngineRegistrar().registerAnalysisEngines(analysisCache); registerUserDefined(analysisCache); Global.setAnalysisCacheForCurrentThread(analysisCache); ICodeBaseLocator codeBaseLocator = new FilesystemCodeBaseLocator("."); ICodeBase codeBase = new DirectoryCodeBase(codeBaseLocator, new File(CODEBASE_DIRECTORY)); codeBase.setApplicationCodeBase(true); classPath.addCodeBase(codeBase); addAuxCodeBasesFromClassPath(classPath); IClassFactory classFactory = ClassFactory.instance(); IClassPathBuilder builder = classFactory.createClassPathBuilder(bugReporter); builder.addCodeBase(codeBaseLocator, true); builder.scanNestedArchives(true); IClassPathBuilderProgress progress = new NoOpFindBugsProgress(); builder.build(classPath, progress); List<ClassDescriptor> appClassList = builder.getAppClassList(); AnalysisCacheToAnalysisContextAdapter analysisContext = new AnalysisCacheToAnalysisContextAdapter(); AnalysisContext.setCurrentAnalysisContext(analysisContext); analysisContext.setAppClassList(appClassList); analysisContext.setFieldSummary(new FieldSummary()); }
private static void addAuxCodeBasesFromClassPath(ClassPathImpl classPath) throws Exception { Iterable<ICodeBaseLocator> codeBaseLocators = AUX_CODEBASE_LOCATOR_PROVIDER.get(classPathEntries()); for (ICodeBaseLocator auxCodeBaseLocator : codeBaseLocators) { ICodeBase auxCodeBase = auxCodeBaseLocator.openCodeBase(); classPath.addCodeBase(auxCodeBase); } }
@Override public IClassPath createClassPath() { return new ClassPathImpl(); }
@Override public ICodeBaseEntry lookupResource(String resourceName) throws ResourceNotFoundException { // See if we have cached the codebase entry for this resource ICodeBaseEntry result = codeBaseEntryMap.get(resourceName); if (result == null) { // No previously resolved entry - look up the resources in the // codebases // First try application codebases result = search(appCodeBaseList, resourceName); if (result == null) { // Next try aux codebases result = search(auxCodeBaseList, resourceName); } // If not found in any codebase, then throw // ResourceNotFoundException if (result == null) { throw new ResourceNotFoundException(resourceName); } // Cache the entry for future lookups codeBaseEntryMap.put(resourceName, result); } return result; }