1 19 20 package edu.umd.cs.findbugs.classfile.engine; 21 22 import java.io.ByteArrayInputStream ; 23 import java.io.DataInputStream ; 24 import java.io.IOException ; 25 import java.io.InputStream ; 26 27 import edu.umd.cs.findbugs.classfile.CheckedAnalysisException; 28 import edu.umd.cs.findbugs.classfile.ClassDescriptor; 29 import edu.umd.cs.findbugs.classfile.ClassNameMismatchException; 30 import edu.umd.cs.findbugs.classfile.FieldDescriptor; 31 import edu.umd.cs.findbugs.classfile.IAnalysisCache; 32 import edu.umd.cs.findbugs.classfile.IClassAnalysisEngine; 33 import edu.umd.cs.findbugs.classfile.IClassConstants; 34 import edu.umd.cs.findbugs.classfile.ICodeBaseEntry; 35 import edu.umd.cs.findbugs.classfile.InvalidClassFileFormatException; 36 import edu.umd.cs.findbugs.classfile.analysis.ClassData; 37 import edu.umd.cs.findbugs.classfile.analysis.ClassInfo; 38 39 46 public class ClassInfoAnalysisEngine implements IClassAnalysisEngine { 47 48 51 public Object analyze(IAnalysisCache analysisCache, 52 ClassDescriptor descriptor) throws CheckedAnalysisException { 53 ClassData classData = analysisCache.getClassAnalysis(ClassData.class, descriptor); 55 DataInputStream classDataIn = 56 new DataInputStream (new ByteArrayInputStream (classData.getData())); 57 58 ClassParser parser = new ClassParser(classDataIn, descriptor, classData.getCodeBaseEntry()); 60 ClassInfo classInfo = new ClassInfo(); 61 parser.parse(classInfo); 62 63 if (!classInfo.getClassDescriptor().equals(descriptor)) { 64 throw new ClassNameMismatchException( 65 descriptor, 66 classInfo.getClassDescriptor(), 67 classData.getCodeBaseEntry()); 68 } 69 return classInfo; 70 } 71 72 75 public void registerWith(IAnalysisCache analysisCache) { 76 analysisCache.registerClassAnalysisEngine(ClassInfo.class, this); 77 } 78 79 82 public boolean retainAnalysisResults() { 83 return false; 86 } 87 } 88 | Popular Tags |