1 19 20 package edu.umd.cs.findbugs.classfile.engine.asm; 21 22 import edu.umd.cs.findbugs.classfile.CheckedAnalysisException; 23 import edu.umd.cs.findbugs.classfile.ClassDescriptor; 24 import edu.umd.cs.findbugs.classfile.IAnalysisCache; 25 import edu.umd.cs.findbugs.classfile.IClassAnalysisEngine; 26 import edu.umd.cs.findbugs.classfile.ICodeBaseEntry; 27 import edu.umd.cs.findbugs.classfile.InvalidClassFileFormatException; 28 29 import org.objectweb.asm.ClassReader; 30 import org.objectweb.asm.tree.ClassNode; 31 32 38 public class ClassNodeAnalysisEngine implements IClassAnalysisEngine { 39 40 43 public Object analyze(IAnalysisCache analysisCache, ClassDescriptor descriptor) throws CheckedAnalysisException { 44 ClassReader classReader = analysisCache.getClassAnalysis(ClassReader.class, descriptor); 45 46 ICodeBaseEntry entry = analysisCache.getClassPath().lookupResource(descriptor.toResourceName()); 47 48 try { 53 ClassNode cn = new ClassNode(); 54 classReader.accept(cn, 0); 55 return cn; 56 } catch (RuntimeException e) { 57 throw new InvalidClassFileFormatException(descriptor, entry, e); 58 } 59 } 60 61 64 public void registerWith(IAnalysisCache analysisCache) { 65 analysisCache.registerClassAnalysisEngine(ClassNode.class, this); 66 } 67 68 71 public boolean retainAnalysisResults() { 72 return false; 74 } 75 } 76 | Popular Tags |