FindBugs™ 1.3.9

edu.umd.cs.findbugs
Class FindBugs2

java.lang.Object
  extended by edu.umd.cs.findbugs.FindBugs2
All Implemented Interfaces:
IFindBugsEngine, IFindBugsEngine2

public class FindBugs2
extends java.lang.Object
implements IFindBugsEngine2

FindBugs driver class. Orchestrates the analysis of a project, collection of results, etc.

Author:
David Hovemeyer

Field Summary
static boolean DEBUG
           
static boolean PROGRESS
           
 
Constructor Summary
FindBugs2()
          Constructor.
 
Method Summary
 void addClassObserver(IClassObserver classObserver)
          Add an IClassObserver.
 void addFilter(java.lang.String filterFileName, boolean include)
          Set filter of bug instances to include or exclude.
static void clearAnalysisContext()
           
static void createAnalysisContext(Project project, java.util.List<ClassDescriptor> appClassList, java.lang.String sourceInfoFileName)
          Create the AnalysisContext that will serve as the BCEL-compatibility layer over the AnalysisCache.
 void dispose()
          To avoid cyclic cross-references and allow GC after engine is not more needed.
 boolean emitTrainingOutput()
          Return whether or not training output should be emitted after analysis completes.
 void enableTrainingInput(java.lang.String trainingInputDir)
          Set whether or not training input should be used to make the analysis more precise.
 void enableTrainingOutput(java.lang.String trainingOutputDir)
          Set whether or not training output should be emitted.
 void excludeBaselineBugs(java.lang.String baselineBugs)
          Provide baseline of bugs not to report
 void execute()
          Execute the analysis.
 void finishSettings()
           
 int getBugCount()
          Get the number of bug instances that were reported during analysis.
 BugReporter getBugReporter()
          Get the BugReporter.
 java.lang.String getCurrentClass()
          Get the name of the most recent class to be analyzed.
 int getErrorCount()
          Get the number of errors that occurred during analysis.
 int getMissingClassCount()
          Get the number of time missing classes were reported during analysis.
 Project getProject()
          Get the Project.
 java.lang.String getProjectName()
           
 java.lang.String getReleaseName()
           
 java.lang.String getTrainingInputDir()
          Get the training input database directory.
 java.lang.String getTrainingOutputDir()
          Get the training output directory.
 UserPreferences getUserPreferences()
          Get the UserPreferences.
static void main(java.lang.String[] args)
           
static void registerBuiltInAnalysisEngines(IAnalysisCache analysisCache)
          Register the "built-in" analysis engines with given IAnalysisCache.
static void registerPluginAnalysisEngines(DetectorFactoryCollection detectorFactoryCollection, IAnalysisCache analysisCache)
          Register all of the analysis engines defined in the plugins contained in a DetectorFactoryCollection with an IAnalysisCache.
 void setAbridgedMessages(boolean xmlWithAbridgedMessages)
           
 void setAnalysisFeatureSettings(AnalysisFeatureSetting[] settingList)
          Set analysis feature settings.
 void setApplySuppression(boolean applySuppression)
           
 void setBugReporter(BugReporter bugReporter)
          Set the BugReporter.
 void setClassScreener(IClassScreener classScreener)
          Set the ClassScreener.
 void setDetectorFactoryCollection(DetectorFactoryCollection detectorFactoryCollection)
          Set the detector factory collection to be used by this FindBugs2 engine.
 void setMergeSimilarWarnings(boolean mergeSimilarWarnings)
           
 void setNoClassOk(boolean noClassOk)
          Set whether or not to generate an empty output file if there were no class files specified.
 void setProgressCallback(FindBugsProgress progressCallback)
          Set the progress callback that will be used to keep track of the progress of the analysis.
 void setProject(Project project)
          Set the Project.
 void setProjectName(java.lang.String name)
           
 void setRankThreshold(int rankThreshold)
           
 void setRelaxedReportingMode(boolean relaxedReportingMode)
          Set relaxed reporting mode.
 void setReleaseName(java.lang.String releaseName)
           
 void setScanNestedArchives(boolean scanNestedArchives)
          Set whether or not nested archives should be scanned.
 void setSourceInfoFile(java.lang.String sourceInfoFile)
          Set the filename of the source info file containing line numbers for fields and classes.
 void setUserPreferences(UserPreferences userPreferences)
          Set the UserPreferences representing which Detectors should be used.
 java.util.List<ClassDescriptor> sortByCallGraph(java.util.Collection<ClassDescriptor> classList, TopologicalSort.OutEdges<ClassDescriptor> outEdges)
           
 boolean useTrainingInput()
          Return whether or not we should make use of training data.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

DEBUG

public static final boolean DEBUG

PROGRESS

public static final boolean PROGRESS
Constructor Detail

FindBugs2

public FindBugs2()
Constructor.

Method Detail

setDetectorFactoryCollection

public void setDetectorFactoryCollection(DetectorFactoryCollection detectorFactoryCollection)
Set the detector factory collection to be used by this FindBugs2 engine. This method should be called before the execute() method is called.

Specified by:
setDetectorFactoryCollection in interface IFindBugsEngine
Parameters:
detectorFactoryCollection - The detectorFactoryCollection to set.

execute

public void execute()
             throws java.io.IOException,
                    java.lang.InterruptedException
Execute the analysis. For obscure reasons, CheckedAnalysisExceptions are re-thrown as IOExceptions. However, these can only happen during the setup phase where we scan codebases for classes.

Specified by:
execute in interface IFindBugsEngine
Throws:
java.io.IOException
java.lang.InterruptedException

dispose

public void dispose()
To avoid cyclic cross-references and allow GC after engine is not more needed. (used by Eclipse plugin)


getBugReporter

public BugReporter getBugReporter()
Description copied from interface: IFindBugsEngine
Get the BugReporter.

Specified by:
getBugReporter in interface IFindBugsEngine
Returns:
the BugReporter

getProject

public Project getProject()
Description copied from interface: IFindBugsEngine
Get the Project.

Specified by:
getProject in interface IFindBugsEngine
Returns:
the Project

addClassObserver

public void addClassObserver(IClassObserver classObserver)
Description copied from interface: IFindBugsEngine
Add an IClassObserver.

Specified by:
addClassObserver in interface IFindBugsEngine
Parameters:
classObserver - the IClassObserver

addFilter

public void addFilter(java.lang.String filterFileName,
                      boolean include)
               throws java.io.IOException,
                      FilterException
Description copied from interface: IFindBugsEngine
Set filter of bug instances to include or exclude.

Specified by:
addFilter in interface IFindBugsEngine
Parameters:
filterFileName - the name of the filter file
include - true if the filter specifies bug instances to include, false if it specifies bug instances to exclude
Throws:
java.io.IOException
FilterException

excludeBaselineBugs

public void excludeBaselineBugs(java.lang.String baselineBugs)
                         throws java.io.IOException,
                                org.dom4j.DocumentException
Description copied from interface: IFindBugsEngine
Provide baseline of bugs not to report

Specified by:
excludeBaselineBugs in interface IFindBugsEngine
Parameters:
baselineBugs - the name of the xml bug baseline file
Throws:
org.dom4j.DocumentException
java.io.IOException

enableTrainingInput

public void enableTrainingInput(java.lang.String trainingInputDir)
Description copied from interface: IFindBugsEngine
Set whether or not training input should be used to make the analysis more precise.

Specified by:
enableTrainingInput in interface IFindBugsEngine
Parameters:
trainingInputDir - directory to load training input from

enableTrainingOutput

public void enableTrainingOutput(java.lang.String trainingOutputDir)
Description copied from interface: IFindBugsEngine
Set whether or not training output should be emitted.

Specified by:
enableTrainingOutput in interface IFindBugsEngine
Parameters:
trainingOutputDir - directory to save training output in

getBugCount

public int getBugCount()
Description copied from interface: IFindBugsEngine
Get the number of bug instances that were reported during analysis.

Specified by:
getBugCount in interface IFindBugsEngine

getCurrentClass

public java.lang.String getCurrentClass()
Description copied from interface: IFindBugsEngine
Get the name of the most recent class to be analyzed. This is useful for diagnosing an unexpected exception. Returns null if no class has been analyzed.

Specified by:
getCurrentClass in interface IFindBugsEngine

getErrorCount

public int getErrorCount()
Description copied from interface: IFindBugsEngine
Get the number of errors that occurred during analysis.

Specified by:
getErrorCount in interface IFindBugsEngine

getMissingClassCount

public int getMissingClassCount()
Description copied from interface: IFindBugsEngine
Get the number of time missing classes were reported during analysis.

Specified by:
getMissingClassCount in interface IFindBugsEngine

getReleaseName

public java.lang.String getReleaseName()
Specified by:
getReleaseName in interface IFindBugsEngine
Returns:
Returns the releaseName.

getProjectName

public java.lang.String getProjectName()
Specified by:
getProjectName in interface IFindBugsEngine
Returns:
Returns the projectName.

setProjectName

public void setProjectName(java.lang.String name)
Specified by:
setProjectName in interface IFindBugsEngine
Parameters:
name - The project name to set.

setAnalysisFeatureSettings

public void setAnalysisFeatureSettings(AnalysisFeatureSetting[] settingList)
Description copied from interface: IFindBugsEngine
Set analysis feature settings.

Specified by:
setAnalysisFeatureSettings in interface IFindBugsEngine
Parameters:
settingList - list of analysis feature settings

setBugReporter

public void setBugReporter(BugReporter bugReporter)
Description copied from interface: IFindBugsEngine
Set the BugReporter.

Specified by:
setBugReporter in interface IFindBugsEngine
Parameters:
bugReporter - The BugReporter to set

setClassScreener

public void setClassScreener(IClassScreener classScreener)
Description copied from interface: IFindBugsEngine
Set the ClassScreener. This object chooses which individual classes to analyze. By default, all classes are analyzed.

Specified by:
setClassScreener in interface IFindBugsEngine
Parameters:
classScreener - the ClassScreener to use

setProgressCallback

public void setProgressCallback(FindBugsProgress progressCallback)
Description copied from interface: IFindBugsEngine
Set the progress callback that will be used to keep track of the progress of the analysis.

Specified by:
setProgressCallback in interface IFindBugsEngine
Parameters:
progressCallback - the progress callback

setProject

public void setProject(Project project)
Description copied from interface: IFindBugsEngine
Set the Project.

Specified by:
setProject in interface IFindBugsEngine
Parameters:
project - The Project to set

setRelaxedReportingMode

public void setRelaxedReportingMode(boolean relaxedReportingMode)
Description copied from interface: IFindBugsEngine
Set relaxed reporting mode.

Specified by:
setRelaxedReportingMode in interface IFindBugsEngine
Parameters:
relaxedReportingMode - true if relaxed reporting mode should be enabled, false if not

setReleaseName

public void setReleaseName(java.lang.String releaseName)
Specified by:
setReleaseName in interface IFindBugsEngine
Parameters:
releaseName - The releaseName to set.

setSourceInfoFile

public void setSourceInfoFile(java.lang.String sourceInfoFile)
Description copied from interface: IFindBugsEngine
Set the filename of the source info file containing line numbers for fields and classes.

Specified by:
setSourceInfoFile in interface IFindBugsEngine
Parameters:
sourceInfoFile - the source info filename

setUserPreferences

public void setUserPreferences(UserPreferences userPreferences)
Description copied from interface: IFindBugsEngine
Set the UserPreferences representing which Detectors should be used. If UserPreferences are not set explicitly, the default set of Detectors will be used.

Specified by:
setUserPreferences in interface IFindBugsEngine
Parameters:
userPreferences - the UserPreferences

emitTrainingOutput

public boolean emitTrainingOutput()
Description copied from interface: IFindBugsEngine
Return whether or not training output should be emitted after analysis completes.

Specified by:
emitTrainingOutput in interface IFindBugsEngine
Returns:
true if training output should be emitted, false if not

getUserPreferences

public UserPreferences getUserPreferences()
Description copied from interface: IFindBugsEngine
Get the UserPreferences.

Specified by:
getUserPreferences in interface IFindBugsEngine
Returns:
the UserPreferences

getTrainingInputDir

public java.lang.String getTrainingInputDir()
Description copied from interface: IFindBugsEngine
Get the training input database directory.

Specified by:
getTrainingInputDir in interface IFindBugsEngine
Returns:
the training input database directory

getTrainingOutputDir

public java.lang.String getTrainingOutputDir()
Description copied from interface: IFindBugsEngine
Get the training output directory.

Specified by:
getTrainingOutputDir in interface IFindBugsEngine
Returns:
the training output directory

useTrainingInput

public boolean useTrainingInput()
Description copied from interface: IFindBugsEngine
Return whether or not we should make use of training data.

Specified by:
useTrainingInput in interface IFindBugsEngine
Returns:
true if training data should be used, false if not

setScanNestedArchives

public void setScanNestedArchives(boolean scanNestedArchives)
Description copied from interface: IFindBugsEngine
Set whether or not nested archives should be scanned.

Specified by:
setScanNestedArchives in interface IFindBugsEngine
Parameters:
scanNestedArchives - true if nested archives should be scanned, false if not

setNoClassOk

public void setNoClassOk(boolean noClassOk)
Description copied from interface: IFindBugsEngine
Set whether or not to generate an empty output file if there were no class files specified.

Specified by:
setNoClassOk in interface IFindBugsEngine
Parameters:
noClassOk - true if FindBugs should generate empty output file

registerBuiltInAnalysisEngines

public static void registerBuiltInAnalysisEngines(IAnalysisCache analysisCache)
Register the "built-in" analysis engines with given IAnalysisCache.

Parameters:
analysisCache - an IAnalysisCache

registerPluginAnalysisEngines

public static void registerPluginAnalysisEngines(DetectorFactoryCollection detectorFactoryCollection,
                                                 IAnalysisCache analysisCache)
                                          throws java.io.IOException
Register all of the analysis engines defined in the plugins contained in a DetectorFactoryCollection with an IAnalysisCache.

Parameters:
detectorFactoryCollection - a DetectorFactoryCollection
analysisCache - an IAnalysisCache
Throws:
java.io.IOException

sortByCallGraph

public java.util.List<ClassDescriptor> sortByCallGraph(java.util.Collection<ClassDescriptor> classList,
                                                       TopologicalSort.OutEdges<ClassDescriptor> outEdges)

clearAnalysisContext

public static void clearAnalysisContext()

createAnalysisContext

public static void createAnalysisContext(Project project,
                                         java.util.List<ClassDescriptor> appClassList,
                                         java.lang.String sourceInfoFileName)
                                  throws CheckedAnalysisException,
                                         java.io.IOException
Create the AnalysisContext that will serve as the BCEL-compatibility layer over the AnalysisCache.

Parameters:
project - The project
appClassList - list of ClassDescriptors identifying application classes
sourceInfoFileName - name of source info file (null if none)
Throws:
CheckedAnalysisException
java.io.IOException

main

public static void main(java.lang.String[] args)
                 throws java.lang.Exception
Throws:
java.lang.Exception

setAbridgedMessages

public void setAbridgedMessages(boolean xmlWithAbridgedMessages)
Specified by:
setAbridgedMessages in interface IFindBugsEngine

setMergeSimilarWarnings

public void setMergeSimilarWarnings(boolean mergeSimilarWarnings)
Specified by:
setMergeSimilarWarnings in interface IFindBugsEngine

setApplySuppression

public void setApplySuppression(boolean applySuppression)
Specified by:
setApplySuppression in interface IFindBugsEngine

setRankThreshold

public void setRankThreshold(int rankThreshold)
Specified by:
setRankThreshold in interface IFindBugsEngine2

finishSettings

public void finishSettings()
Specified by:
finishSettings in interface IFindBugsEngine

FindBugs™ 1.3.9

FindBugs™ is licenced under the LGPL. Copyright © 2006 University of Maryland.