/** * Starts the analysis for all {@link Path}s of the given {@link Map} that have a null value. * As such, it can be used to avoid analyzing archives multiple times. */ public void startAnalysis(@NotNull Map<Path, JarAnalyzer> _paths, JarAnalyzer _parent) { // Split those that have been analyzed already and those that need analysis final Set<Path> not_yet_analyzed = new HashSet<Path>(); for(Map.Entry<Path, JarAnalyzer> entry: _paths.entrySet()) { if(entry.getValue()==null) not_yet_analyzed.add(entry.getKey()); else this.analyzers.put(entry.getKey(), entry.getValue()); } // Analyze if necessary if(!not_yet_analyzed.isEmpty()) { log.info("[" + this.analyzers.size() + "/" + _paths.size() + "] archives already analyzed, the remaining [" + not_yet_analyzed.size() + "] will be analyzed now ..."); this.startAnalysis(not_yet_analyzed, _parent); } else { log.info("All [" + this.analyzers.size() + "/" + _paths.size() + "] archives have been analyzed already"); } }
mgr.startAnalysis(jars, this); this.nestedAnalyzers = new HashSet<FileAnalyzer>(); this.nestedAnalyzers.addAll(mgr.getAnalyzers());
mgr.startAnalysis(dep_files, null);
mgr.startAnalysis(vis.search(getInstrPaths(), search_depth), null);