Package edu.umd.cs.findbugs
Class AbstractBugReporter
- java.lang.Object
-
- edu.umd.cs.findbugs.AbstractBugReporter
-
- All Implemented Interfaces:
RepositoryLookupFailureCallback,BugReporter,IClassObserver,IErrorLogger
- Direct Known Subclasses:
TextUIBugReporter
public abstract class AbstractBugReporter extends java.lang.Object implements BugReporter
An abstract class which provides much of the functionality required of all BugReporter objects.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classAbstractBugReporter.Error
-
Field Summary
Fields Modifier and Type Field Description private interrorCountprivate java.util.Set<AbstractBugReporter.Error>errorSetprivate static org.slf4j.LoggerLOGprivate java.util.Set<java.lang.String>missingClassMessageListprivate java.util.List<BugReporterObserver>observerListprivate PriorityAdjusterpriorityAdjusterprivate intpriorityThresholdprivate ProjectStatsprojectStatsprivate intrankThresholdprivate booleanrelaxedprivate booleanrelaxedSetprivate intverbosityLevel-
Fields inherited from interface edu.umd.cs.findbugs.BugReporter
NORMAL, SILENT
-
-
Constructor Summary
Constructors Modifier Constructor Description protectedAbstractBugReporter()
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description voidaddObserver(BugReporterObserver observer)Add an observer.protected abstract voiddoReportBug(BugInstance bugInstance)Subclasses must override this.protected java.util.Set<java.lang.String>getMissingClasses()static java.lang.StringgetMissingClassName(java.lang.ClassNotFoundException ex)PriorityAdjustergetPriorityAdjuster()ProjectStatsgetProjectStats()Get ProjectStats object used to store statistics about the overall project being analyzed.java.util.Set<AbstractBugReporter.Error>getQueuedErrors()protected booleanisRelaxed()protected static booleanisValidMissingClassMessage(java.lang.String message)voidlogError(java.lang.String message)Log an error that occurs while performing analysis.voidlogError(java.lang.String message, java.lang.Throwable e)Log an error that occurs while performing analysis.private voidlogMissingClass(java.lang.String message)protected voidnotifyObservers(BugInstance bugInstance)This should be called when a bug is reported by a subclass.abstract voidreportAnalysisError(AnalysisError error)Report a queued error.voidreportBug(BugInstance bugInstance)Report a bug.voidreportBugsFromXml(java.io.InputStream in, Project theProject)voidreportMissingClass(ClassDescriptor classDescriptor)Called to report a class lookup failure.voidreportMissingClass(java.lang.ClassNotFoundException ex)Called to report a class lookup failure.abstract voidreportMissingClass(java.lang.String string)Report a missing class.voidreportQueuedErrors()Report any accumulated error messages.voidreportSkippedAnalysis(MethodDescriptor method)Report that we skipped some analysis of a methodvoidsetErrorVerbosity(int level)Set the error-reporting verbosity level.voidsetIsRelaxed(boolean relaxed)voidsetPriorityAdjuster(PriorityAdjuster priorityAdjuster)Allows to adjust priorities when bugs are reported.voidsetPriorityThreshold(int threshold)Set the priority threshold.voidsetRankThreshold(int threshold)-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface edu.umd.cs.findbugs.BugReporter
finish, getBugCollection
-
Methods inherited from interface edu.umd.cs.findbugs.classfile.IClassObserver
observeClass
-
Methods inherited from interface edu.umd.cs.findbugs.classfile.IErrorLogger
reportMissingClass
-
-
-
-
Field Detail
-
LOG
private static final org.slf4j.Logger LOG
-
verbosityLevel
private int verbosityLevel
-
priorityThreshold
private int priorityThreshold
-
rankThreshold
private int rankThreshold
-
relaxedSet
private boolean relaxedSet
-
relaxed
private boolean relaxed
-
errorCount
private int errorCount
-
missingClassMessageList
private final java.util.Set<java.lang.String> missingClassMessageList
-
errorSet
private final java.util.Set<AbstractBugReporter.Error> errorSet
-
observerList
private final java.util.List<BugReporterObserver> observerList
-
projectStats
private final ProjectStats projectStats
-
priorityAdjuster
private PriorityAdjuster priorityAdjuster
-
-
Method Detail
-
setErrorVerbosity
public void setErrorVerbosity(int level)
Description copied from interface:BugReporterSet the error-reporting verbosity level.- Specified by:
setErrorVerbosityin interfaceBugReporter- Parameters:
level- the verbosity level
-
setPriorityThreshold
public void setPriorityThreshold(int threshold)
Description copied from interface:BugReporterSet the priority threshold.- Specified by:
setPriorityThresholdin interfaceBugReporter- Parameters:
threshold- bug instances must be at least as important as this priority to be reported
-
setRankThreshold
public void setRankThreshold(int threshold)
-
setIsRelaxed
public void setIsRelaxed(boolean relaxed)
-
setPriorityAdjuster
public void setPriorityAdjuster(PriorityAdjuster priorityAdjuster)
Allows to adjust priorities when bugs are reported. Bugs imported from XML (seereportBugsFromXml(InputStream, Project)are not affected.- Specified by:
setPriorityAdjusterin interfaceBugReporter- Parameters:
priorityAdjuster- the priority adjuster
-
isRelaxed
protected boolean isRelaxed()
-
reportBug
public final void reportBug(@Nonnull BugInstance bugInstance)Description copied from interface:BugReporterReport a bug. The implementation may report the bug immediately, or queue it for later.- Specified by:
reportBugin interfaceBugReporter- Parameters:
bugInstance- object describing the bug instance
-
reportBugsFromXml
public final void reportBugsFromXml(@WillClose java.io.InputStream in, Project theProject) throws java.io.IOException, org.dom4j.DocumentException- Throws:
java.io.IOExceptionorg.dom4j.DocumentException
-
getMissingClassName
@CheckForNull @DottedClassName public static java.lang.String getMissingClassName(java.lang.ClassNotFoundException ex)
-
reportMissingClass
public void reportMissingClass(java.lang.ClassNotFoundException ex)
Description copied from interface:IErrorLoggerCalled to report a class lookup failure.- Specified by:
reportMissingClassin interfaceIErrorLogger- Parameters:
ex- a ClassNotFoundException resulting from the class lookup failure
-
isValidMissingClassMessage
protected static final boolean isValidMissingClassMessage(java.lang.String message)
-
reportMissingClass
public void reportMissingClass(ClassDescriptor classDescriptor)
Description copied from interface:IErrorLoggerCalled to report a class lookup failure.- Specified by:
reportMissingClassin interfaceIErrorLogger- Parameters:
classDescriptor- ClassDescriptor of a missing class
-
logMissingClass
private void logMissingClass(java.lang.String message)
- Parameters:
message-
-
reportSkippedAnalysis
public void reportSkippedAnalysis(MethodDescriptor method)
Report that we skipped some analysis of a method- Specified by:
reportSkippedAnalysisin interfaceIErrorLogger- Parameters:
method-
-
logError
public void logError(java.lang.String message)
Description copied from interface:IErrorLoggerLog an error that occurs while performing analysis.- Specified by:
logErrorin interfaceIErrorLogger- Parameters:
message- the error message
-
getQueuedErrors
public java.util.Set<AbstractBugReporter.Error> getQueuedErrors()
- Returns:
- the set with all analysis errors reported so far
-
getMissingClasses
protected java.util.Set<java.lang.String> getMissingClasses()
- Returns:
- the set with all missing classes reported so far
-
logError
public void logError(java.lang.String message, java.lang.Throwable e)Description copied from interface:IErrorLoggerLog an error that occurs while performing analysis.- Specified by:
logErrorin interfaceIErrorLogger- Parameters:
message- the error messagee- the exception which is the underlying cause of the error
-
reportQueuedErrors
public void reportQueuedErrors()
Description copied from interface:BugReporterReport any accumulated error messages.- Specified by:
reportQueuedErrorsin interfaceBugReporter
-
addObserver
public void addObserver(BugReporterObserver observer)
Description copied from interface:BugReporterAdd an observer.- Specified by:
addObserverin interfaceBugReporter- Parameters:
observer- the observer
-
getProjectStats
public ProjectStats getProjectStats()
Description copied from interface:BugReporterGet ProjectStats object used to store statistics about the overall project being analyzed.- Specified by:
getProjectStatsin interfaceBugReporter
-
notifyObservers
protected void notifyObservers(BugInstance bugInstance)
This should be called when a bug is reported by a subclass.- Parameters:
bugInstance- the bug to inform observers of
-
doReportBug
protected abstract void doReportBug(BugInstance bugInstance)
Subclasses must override this. It will be called only for bugs which meet the priority threshold.- Parameters:
bugInstance- the bug to report
-
reportAnalysisError
public abstract void reportAnalysisError(AnalysisError error)
Report a queued error.- Parameters:
error- the queued error
-
reportMissingClass
public abstract void reportMissingClass(java.lang.String string)
Report a missing class.- Parameters:
string- the name of the class
-
getPriorityAdjuster
public PriorityAdjuster getPriorityAdjuster()
- Specified by:
getPriorityAdjusterin interfaceBugReporter- Returns:
- the PriorityAdjuster set for this BugReporter, or null if none was set
-
-