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 BugAccumulatorprotected BugReporterprivate static final booleanprivate static final StringFields inherited from interface Priorities
EXP_PRIORITY, HIGH_PRIORITY, IGNORE_PRIORITY, LOW_PRIORITY, NORMAL_PRIORITY -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidanalyzeMethod(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 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: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 -
report
-