Package edu.umd.cs.findbugs.detect
Class Stream
java.lang.Object
edu.umd.cs.findbugs.ResourceCreationPoint
edu.umd.cs.findbugs.detect.Stream
- All Implemented Interfaces:
Comparable<Stream>
A Stream object marks the location in the code where a stream is created. It also is responsible for determining some aspects of how the stream state is tracked by the ResourceValueAnalysis, such as when the stream is opened or closed, and whether implicit exception edges are significant.
TODO: change streamClass and streamBase to ObjectType
TODO: isStreamOpen() and isStreamClose() should probably be abstract, so we can customize how they work for different kinds of streams
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionint
boolean
int
int
hashCode()
boolean
boolean
isClosed()
Return whether or not the Stream is closed on all paths out of the method.boolean
boolean
isStreamClose
(BasicBlock basicBlock, org.apache.bcel.generic.InstructionHandle handle, org.apache.bcel.generic.ConstantPoolGen cpg, ResourceValueFrame frame, RepositoryLookupFailureCallback lookupFailureCallback) boolean
isStreamOpen
(BasicBlock basicBlock, org.apache.bcel.generic.InstructionHandle handle, org.apache.bcel.generic.ConstantPoolGen cpg, ResourceValueFrame frame) boolean
static boolean
mightCloseStream
(BasicBlock basicBlock, org.apache.bcel.generic.InstructionHandle handle, org.apache.bcel.generic.ConstantPoolGen cpg) void
Set this Stream has having been closed on all paths out of the method.setIgnoreImplicitExceptions
(boolean enable) Mark whether or not implicit exception edges should be ignored by ResourceValueAnalysis when determining whether or not stream is closed on all paths out of method.void
setInstanceParam
(int instanceParam) Set the number of the parameter which passes the stream instance.setInteresting
(String bugType) Mark this Stream as interesting.setIsOpenOnCreation
(boolean enable) Mark whether or not Stream is open as soon as it is created, or whether a later method or constructor must explicitly open it.void
setOpenLocation
(Location openLocation) toString()
Methods inherited from class edu.umd.cs.findbugs.ResourceCreationPoint
getLocation, getResourceClass
-
Constructor Details
-
Stream
Constructor. By default, Stream objects are marked as uninteresting. setInteresting("BUG_TYPE") must be called explicitly to mark the Stream as interesting.- Parameters:
location
- where the stream is createdstreamClass
- type of StreamstreamBase
- highest class in the class hierarchy through which stream's close() method could be called
-
-
Method Details
-
toString
-
setInteresting
Mark this Stream as interesting.- Parameters:
bugType
- the bug type that should be reported if the stream is not closed on all paths out of the method
-
setIgnoreImplicitExceptions
Mark whether or not implicit exception edges should be ignored by ResourceValueAnalysis when determining whether or not stream is closed on all paths out of method. -
setIsOpenOnCreation
Mark whether or not Stream is open as soon as it is created, or whether a later method or constructor must explicitly open it. -
setInstanceParam
public void setInstanceParam(int instanceParam) Set the number of the parameter which passes the stream instance.- Parameters:
instanceParam
- number of the parameter passing the stream instance
-
setClosed
public void setClosed()Set this Stream has having been closed on all paths out of the method. -
getStreamBase
-
isUninteresting
public boolean isUninteresting() -
isOpenOnCreation
public boolean isOpenOnCreation() -
setOpenLocation
-
getOpenLocation
-
ignoreImplicitExceptions
public boolean ignoreImplicitExceptions() -
getInstanceParam
public int getInstanceParam() -
getBugType
-
isClosed
public boolean isClosed()Return whether or not the Stream is closed on all paths out of the method. -
isStreamOpen
public boolean isStreamOpen(BasicBlock basicBlock, org.apache.bcel.generic.InstructionHandle handle, org.apache.bcel.generic.ConstantPoolGen cpg, ResourceValueFrame frame) -
mightCloseStream
public static boolean mightCloseStream(BasicBlock basicBlock, org.apache.bcel.generic.InstructionHandle handle, org.apache.bcel.generic.ConstantPoolGen cpg) -
isStreamClose
public boolean isStreamClose(BasicBlock basicBlock, org.apache.bcel.generic.InstructionHandle handle, org.apache.bcel.generic.ConstantPoolGen cpg, ResourceValueFrame frame, RepositoryLookupFailureCallback lookupFailureCallback) -
hashCode
public int hashCode() -
equals
-
compareTo
- Specified by:
compareTo
in interfaceComparable<Stream>
-