1 19 package edu.umd.cs.findbugs.gui; 20 21 import edu.umd.cs.findbugs.SortedBugCollection; 22 import edu.umd.cs.findbugs.TextUIBugReporter; 23 import edu.umd.cs.findbugs.classfile.ClassDescriptor; 24 25 28 public class SwingGUIBugReporter extends TextUIBugReporter { 29 private final AnalysisRun analysisRun; 30 private SortedBugCollection bugCollection; 31 private AnalysisErrorDialog errorDialog; 32 private int errorCount; 33 34 39 public SwingGUIBugReporter(AnalysisRun analysisRun) { 40 this.analysisRun = analysisRun; 41 this.bugCollection = new SortedBugCollection(getProjectStats()); 42 } 43 44 public SortedBugCollection getBugCollection() { 45 return bugCollection; 46 } 47 48 public boolean errorsOccurred() { 49 return errorCount > 0; 50 } 51 52 public AnalysisErrorDialog getErrorDialog() { 53 return errorDialog; 54 } 55 56 public void observeClass(ClassDescriptor classDescriptor) { 57 } 58 59 @Override 60 public void reportMissingClass(ClassNotFoundException ex) { 61 ++errorCount; 62 super.reportMissingClass(ex); 63 String message = getMissingClassName(ex); 64 bugCollection.addMissingClass(message); 65 } 66 67 @Override 68 public void logError(String message) { 69 ++errorCount; 70 analysisRun.getFrame().getLogger().logMessage(ConsoleLogger.WARNING, message); 71 super.logError(message); 72 bugCollection.addError(message); 73 } 74 75 public void finish() { 76 } 77 78 @Override 79 public void doReportBug(edu.umd.cs.findbugs.BugInstance bugInstance) { 80 checkBugInstance(bugInstance); 81 if (bugCollection.add(bugInstance)) 82 notifyObservers(bugInstance); 83 } 84 85 private void createDialog() { 86 if (errorDialog == null) { 87 errorDialog = new AnalysisErrorDialog(analysisRun.getFrame(), true, this); 88 } 89 } 90 91 @Override 93 public void reportQueuedErrors() { 94 createDialog(); 95 errorDialog.clear(); 96 super.reportQueuedErrors(); 97 errorDialog.finish(); 98 } 99 100 @Override 102 protected void emitLine(String line) { 103 line = line.replaceAll("\t", " "); 104 errorDialog.addLine(line); 105 } 106 } 107 | Popular Tags |