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 BugAccumulator
bugAccumulator
protected BugReporter
bugReporter
private static boolean
DEBUG
private static java.lang.String
DEBUG_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 protected
ResourceTrackingDetector(BugReporter bugReporter)
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description void
analyzeMethod(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 ResourceTrackerType
getResourceTracker(ClassContext classContext, org.apache.bcel.classfile.Method method)
abstract void
inspectResult(ClassContext classContext, org.apache.bcel.generic.MethodGen methodGen, CFG cfg, Dataflow<ResourceValueFrame,ResourceValueAnalysis<Resource>> dataflow, Resource resource)
private boolean
mightCloseResource(ClassContext classContext, org.apache.bcel.classfile.Method method, ResourceTrackerType resourceTracker)
abstract boolean
prescreen(ClassContext classContext, org.apache.bcel.classfile.Method method, boolean mightClose)
void
report()
This method is called after all classes to be visited.void
visitClassContext(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:Detector
Visit the ClassContext for a class which should be analyzed for instances of bug patterns.- Specified by:
visitClassContext
in 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
-
-