| 1 19 20 package edu.umd.cs.findbugs.model; 21 22 import java.io.IOException ; 23 import java.util.ArrayList ; 24 import java.util.Enumeration ; 25 import java.util.zip.ZipEntry ; 26 import java.util.zip.ZipFile ; 27 28 import org.apache.bcel.Repository; 29 import org.apache.bcel.classfile.ClassParser; 30 import org.apache.bcel.classfile.JavaClass; 31 32 import edu.umd.cs.findbugs.BugCollection; 33 import edu.umd.cs.findbugs.Project; 34 import edu.umd.cs.findbugs.SortedBugCollection; 35 36 42 public class RegenerateClassFeatures { 43 private BugCollection bugCollection; 44 private String jarFile; 45 46 public RegenerateClassFeatures(BugCollection bugCollection, String jarFile) { 47 this.bugCollection = bugCollection; 48 this.jarFile = jarFile; 49 } 50 51 public RegenerateClassFeatures execute() throws IOException { 52 bugCollection.clearClassFeatures(); 53 54 ZipFile zipFile = new ZipFile (jarFile); 55 56 ArrayList <JavaClass> classList = new ArrayList <JavaClass>(); 57 58 Enumeration <? extends ZipEntry > entries = zipFile.entries(); 60 while (entries.hasMoreElements()) { 61 ZipEntry entry = entries.nextElement(); 62 63 if (!entry.getName().endsWith(".class")) 64 continue; 65 66 ClassParser parser = new ClassParser(zipFile.getInputStream(entry), entry.getName()); 67 JavaClass javaClass = parser.parse(); 68 69 Repository.addClass(javaClass); 70 classList.add(javaClass); 71 } 72 73 for (JavaClass javaClass : classList) { 74 ClassFeatureSet classFeatureSet = new ClassFeatureSet().initialize(javaClass); 75 bugCollection.setClassFeatureSet(classFeatureSet); 76 } 77 78 return this; 79 } 80 81 84 public BugCollection getBugCollection() { 85 return bugCollection; 86 } 87 88 public static void main(String [] args) throws Exception { 89 if (args.length != 2) { 90 System.err.println("Usage: " + RegenerateClassFeatures.class.getName() + " <bug collection> <jar file>"); 91 System.exit(1); 92 } 93 94 SortedBugCollection bugCollection = new SortedBugCollection(); 95 Project project = new Project(); 96 97 bugCollection.readXML(args[0], project); 98 99 new RegenerateClassFeatures(bugCollection, args[1]).execute(); 100 101 bugCollection.writeXML(System.out, project); 102 } 103 } 104 | Popular Tags |