1 19 20 package edu.umd.cs.findbugs; 21 22 import edu.umd.cs.findbugs.ba.Debug; 23 import edu.umd.cs.findbugs.ba.MethodUnprofitableException; 24 import edu.umd.cs.findbugs.ba.MissingClassException; 25 import edu.umd.cs.findbugs.classfile.ClassDescriptor; 26 27 public abstract class BugCollectionBugReporter extends TextUIBugReporter implements Debug { 28 private SortedBugCollection bugCollection; 29 private Project project; 30 31 public BugCollectionBugReporter(Project project) { 32 this.project = project; 33 this.bugCollection = new SortedBugCollection(getProjectStats()); 34 35 bugCollection.setTimestamp(System.currentTimeMillis()); 36 } 37 38 public Project getProject() { 39 return project; 40 } 41 42 public BugCollection getBugCollection() { 43 return bugCollection; 44 } 45 46 public void observeClass(ClassDescriptor classDescriptor) { 47 } 48 49 @Override 50 public void logError(String message) { 51 bugCollection.addError(message); 52 super.logError(message); 53 } 54 55 @Override 56 public void logError(String message, Throwable e) { 57 if (e instanceof MissingClassException) { 58 MissingClassException e2 = (MissingClassException)e; 59 reportMissingClass(e2.getClassNotFoundException()); 60 return; 61 } 62 if (e instanceof MethodUnprofitableException) { 63 return; 65 } 66 bugCollection.addError(message, e); 67 super.logError(message, e); 68 } 69 70 @Override 71 public void reportMissingClass(ClassNotFoundException ex) { 72 bugCollection.addMissingClass(getMissingClassName(ex)); 73 super.reportMissingClass(ex); 74 } 75 76 @Override 77 public void doReportBug(BugInstance bugInstance) { 78 if (VERIFY_INTEGRITY) checkBugInstance(bugInstance); 79 if (bugCollection.add(bugInstance)) 80 notifyObservers(bugInstance); 81 } 82 83 86 @Override 87 public BugReporter getRealBugReporter() { 88 return this; 89 } 90 } 91 92 | Popular Tags |