Package edu.umd.cs.findbugs
Class ResourceTrackingDetector<Resource,ResourceTrackerType extends ResourceTracker<Resource>>
- java.lang.Object
-
- edu.umd.cs.findbugs.ResourceTrackingDetector<Resource,ResourceTrackerType>
-
- All Implemented Interfaces:
Detector,Priorities
- Direct Known Subclasses:
FindOpenStream,FindUnreleasedLock
public abstract class ResourceTrackingDetector<Resource,ResourceTrackerType extends ResourceTracker<Resource>> extends java.lang.Object implements Detector
Abstract implementation of a Detector to find methods where a particular kind of created resource is not cleaned up or closed properly. Subclasses should override the abstract methods to determine what kinds of resources are tracked by the detector.
-
-
Field Summary
Fields Modifier and Type Field Description protected BugAccumulatorbugAccumulatorprotected BugReporterbugReporterprivate static booleanDEBUGprivate static java.lang.StringDEBUG_METHOD_NAME-
Fields inherited from interface edu.umd.cs.findbugs.Priorities
EXP_PRIORITY, HIGH_PRIORITY, IGNORE_PRIORITY, LOW_PRIORITY, NORMAL_PRIORITY
-
-
Constructor Summary
Constructors Modifier Constructor Description protectedResourceTrackingDetector(BugReporter bugReporter)
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description voidanalyzeMethod(ClassContext classContext, org.apache.bcel.classfile.Method method, ResourceTrackerType resourceTracker, ResourceCollection<Resource> resourceCollection)private ResourceCollection<Resource>buildResourceCollection(ClassContext classContext, org.apache.bcel.classfile.Method method, ResourceTrackerType resourceTracker)abstract ResourceTrackerTypegetResourceTracker(ClassContext classContext, org.apache.bcel.classfile.Method method)abstract voidinspectResult(ClassContext classContext, org.apache.bcel.generic.MethodGen methodGen, CFG cfg, Dataflow<ResourceValueFrame,ResourceValueAnalysis<Resource>> dataflow, Resource resource)private booleanmightCloseResource(ClassContext classContext, org.apache.bcel.classfile.Method method, ResourceTrackerType resourceTracker)abstract booleanprescreen(ClassContext classContext, org.apache.bcel.classfile.Method method, boolean mightClose)voidreport()This method is called after all classes to be visited.voidvisitClassContext(ClassContext classContext)Visit the ClassContext for a class which should be analyzed for instances of bug patterns.
-
-
-
Field Detail
-
DEBUG
private static final boolean DEBUG
-
DEBUG_METHOD_NAME
private static final java.lang.String DEBUG_METHOD_NAME
-
bugAccumulator
protected BugAccumulator bugAccumulator
-
bugReporter
protected BugReporter bugReporter
-
-
Constructor Detail
-
ResourceTrackingDetector
protected ResourceTrackingDetector(BugReporter bugReporter)
-
-
Method Detail
-
prescreen
public abstract boolean prescreen(ClassContext classContext, org.apache.bcel.classfile.Method method, boolean mightClose)
-
getResourceTracker
public abstract ResourceTrackerType getResourceTracker(ClassContext classContext, org.apache.bcel.classfile.Method method) throws DataflowAnalysisException, CFGBuilderException
-
inspectResult
public abstract void inspectResult(ClassContext classContext, org.apache.bcel.generic.MethodGen methodGen, CFG cfg, Dataflow<ResourceValueFrame,ResourceValueAnalysis<Resource>> dataflow, Resource resource)
-
visitClassContext
public void visitClassContext(ClassContext classContext)
Description copied from interface:DetectorVisit the ClassContext for a class which should be analyzed for instances of bug patterns.- Specified by:
visitClassContextin interfaceDetector- Parameters:
classContext- the ClassContext
-
buildResourceCollection
private ResourceCollection<Resource> buildResourceCollection(ClassContext classContext, org.apache.bcel.classfile.Method method, ResourceTrackerType resourceTracker) throws CFGBuilderException, DataflowAnalysisException
-
mightCloseResource
private boolean mightCloseResource(ClassContext classContext, org.apache.bcel.classfile.Method method, ResourceTrackerType resourceTracker) throws CFGBuilderException, DataflowAnalysisException
-
analyzeMethod
public void analyzeMethod(ClassContext classContext, org.apache.bcel.classfile.Method method, ResourceTrackerType resourceTracker, ResourceCollection<Resource> resourceCollection) throws CFGBuilderException, DataflowAnalysisException
-
-