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 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
FieldsModifier and TypeFieldDescriptionprotected BugAccumulator
protected BugReporter
private static final boolean
private static final String
Fields inherited from interface edu.umd.cs.findbugs.Priorities
EXP_PRIORITY, HIGH_PRIORITY, IGNORE_PRIORITY, LOW_PRIORITY, NORMAL_PRIORITY
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoid
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 Details
-
DEBUG
private static final boolean DEBUG -
DEBUG_METHOD_NAME
-
bugAccumulator
-
bugReporter
-
-
Constructor Details
-
ResourceTrackingDetector
-
-
Method Details
-
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
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 -
report
public void report()Description copied from interface:Detector
This method is called after all classes to be visited. It should be used by any detectors which accumulate information over all visited classes to generate results.
-