Package edu.umd.cs.findbugs.detect
Class FindOpenStream
- java.lang.Object
-
- edu.umd.cs.findbugs.ResourceTrackingDetector<Stream,StreamResourceTracker>
-
- edu.umd.cs.findbugs.detect.FindOpenStream
-
- All Implemented Interfaces:
Detector,Priorities,StatelessDetector,java.lang.Cloneable
public final class FindOpenStream extends ResourceTrackingDetector<Stream,StreamResourceTracker> implements StatelessDetector
A Detector to look for streams that are opened in a method, do not escape the method, and are not closed on all paths out of the method. Note that "stream" is a bit misleading, since we also use the detector to look for database resources that aren't closed.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private static classFindOpenStream.PotentialOpenStream
-
Field Summary
Fields Modifier and Type Field Description (package private) static booleanDEBUG(package private) static booleanIGNORE_WRAPPED_UNINTERESTING_STREAMSprivate java.util.List<FindOpenStream.PotentialOpenStream>potentialOpenStreamListprivate static java.lang.String[]PRESCREEN_CLASS_LIST(package private) static org.apache.bcel.generic.ObjectType[]streamBaseListList of base classes of tracked resources.(package private) static StreamFactory[]streamFactoryListStreamFactory objects used to detect resources created within analyzed methods.-
Fields inherited from class edu.umd.cs.findbugs.ResourceTrackingDetector
bugAccumulator, bugReporter
-
Fields inherited from interface edu.umd.cs.findbugs.Priorities
EXP_PRIORITY, HIGH_PRIORITY, IGNORE_PRIORITY, LOW_PRIORITY, NORMAL_PRIORITY
-
-
Constructor Summary
Constructors Constructor Description FindOpenStream(BugReporter bugReporter)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidanalyzeMethod(ClassContext classContext, org.apache.bcel.classfile.Method method, StreamResourceTracker resourceTracker, ResourceCollection<Stream> resourceCollection)java.lang.Objectclone()StreamResourceTrackergetResourceTracker(ClassContext classContext, org.apache.bcel.classfile.Method method)voidinspectResult(ClassContext classContext, org.apache.bcel.generic.MethodGen methodGen, CFG cfg, Dataflow<ResourceValueFrame,ResourceValueAnalysis<Stream>> dataflow, Stream stream)booleanprescreen(ClassContext classContext, org.apache.bcel.classfile.Method method, boolean mightClose)voidvisitClassContext(ClassContext classContext)Visit the ClassContext for a class which should be analyzed for instances of bug patterns.-
Methods inherited from class edu.umd.cs.findbugs.ResourceTrackingDetector
report
-
-
-
-
Field Detail
-
DEBUG
static final boolean DEBUG
-
IGNORE_WRAPPED_UNINTERESTING_STREAMS
static final boolean IGNORE_WRAPPED_UNINTERESTING_STREAMS
-
streamBaseList
static final org.apache.bcel.generic.ObjectType[] streamBaseList
List of base classes of tracked resources.
-
streamFactoryList
static final StreamFactory[] streamFactoryList
StreamFactory objects used to detect resources created within analyzed methods.
-
potentialOpenStreamList
private final java.util.List<FindOpenStream.PotentialOpenStream> potentialOpenStreamList
-
PRESCREEN_CLASS_LIST
private static final java.lang.String[] PRESCREEN_CLASS_LIST
-
-
Constructor Detail
-
FindOpenStream
public FindOpenStream(BugReporter bugReporter)
-
-
Method Detail
-
clone
public java.lang.Object clone()
- Specified by:
clonein interfaceStatelessDetector- Overrides:
clonein classjava.lang.Object
-
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- Overrides:
visitClassContextin classResourceTrackingDetector<Stream,StreamResourceTracker>- Parameters:
classContext- the ClassContext
-
prescreen
public boolean prescreen(ClassContext classContext, org.apache.bcel.classfile.Method method, boolean mightClose)
- Specified by:
prescreenin classResourceTrackingDetector<Stream,StreamResourceTracker>
-
getResourceTracker
public StreamResourceTracker getResourceTracker(ClassContext classContext, org.apache.bcel.classfile.Method method)
- Specified by:
getResourceTrackerin classResourceTrackingDetector<Stream,StreamResourceTracker>
-
analyzeMethod
public void analyzeMethod(ClassContext classContext, org.apache.bcel.classfile.Method method, StreamResourceTracker resourceTracker, ResourceCollection<Stream> resourceCollection) throws CFGBuilderException, DataflowAnalysisException
- Overrides:
analyzeMethodin classResourceTrackingDetector<Stream,StreamResourceTracker>- Throws:
CFGBuilderExceptionDataflowAnalysisException
-
inspectResult
public void inspectResult(ClassContext classContext, org.apache.bcel.generic.MethodGen methodGen, CFG cfg, Dataflow<ResourceValueFrame,ResourceValueAnalysis<Stream>> dataflow, Stream stream)
- Specified by:
inspectResultin classResourceTrackingDetector<Stream,StreamResourceTracker>
-
-