edu.umd.cs.findbugs.detect
Class StreamFrameModelingVisitor

java.lang.Object
  extended by edu.umd.cs.findbugs.ba.AbstractFrameModelingVisitor<ResourceValue,ResourceValueFrame>
      extended by edu.umd.cs.findbugs.ba.ResourceValueFrameModelingVisitor
          extended by edu.umd.cs.findbugs.detect.StreamFrameModelingVisitor
All Implemented Interfaces:
org.apache.bcel.generic.Visitor

public class StreamFrameModelingVisitor
extends ResourceValueFrameModelingVisitor

A visitor to model the effect of instructions on the status of the resource (in this case, Streams).


Field Summary
private  Location location
           
private  StreamResourceTracker resourceTracker
           
private  Stream stream
           
 
Constructor Summary
StreamFrameModelingVisitor(org.apache.bcel.generic.ConstantPoolGen cpg, StreamResourceTracker resourceTracker, Stream stream)
           
 
Method Summary
protected  boolean instanceEscapes(org.apache.bcel.generic.InvokeInstruction inv, int instanceArgNum)
          Override this to check for methods that it is legal to pass the instance to without the instance escaping.
 void transferInstruction(org.apache.bcel.generic.InstructionHandle handle, BasicBlock basicBlock)
          Subclasses must override this to model the effect of the given instruction on the current frame.
 
Methods inherited from class edu.umd.cs.findbugs.ba.ResourceValueFrameModelingVisitor
getDefaultValue, visitARETURN, visitINVOKEINTERFACE, visitINVOKESPECIAL, visitINVOKESTATIC, visitINVOKEVIRTUAL, visitPUTFIELD, visitPUTSTATIC
 
Methods inherited from class edu.umd.cs.findbugs.ba.AbstractFrameModelingVisitor
getCPG, getFrame, getNumWordsConsumed, getNumWordsProduced, handleLoadInstruction, handleNormalInstruction, handleStoreInstruction, modelNormalInstruction, setFrame, visitAALOAD, visitAASTORE, visitACONST_NULL, visitAllocationInstruction, visitALOAD, visitANEWARRAY, visitArithmeticInstruction, visitArrayInstruction, visitARRAYLENGTH, visitASTORE, visitATHROW, visitBALOAD, visitBASTORE, visitBIPUSH, visitBranchInstruction, visitBREAKPOINT, visitCALOAD, visitCASTORE, visitCHECKCAST, visitConstantPushInstruction, visitConversionInstruction, visitCPInstruction, visitD2F, visitD2I, visitD2L, visitDADD, visitDALOAD, visitDASTORE, visitDCMPG, visitDCMPL, visitDCONST, visitDDIV, visitDLOAD, visitDMUL, visitDNEG, visitDREM, visitDRETURN, visitDSTORE, visitDSUB, visitDUP_X1, visitDUP_X2, visitDUP, visitDUP2_X1, visitDUP2_X2, visitDUP2, visitExceptionThrower, visitF2D, visitF2I, visitF2L, visitFADD, visitFALOAD, visitFASTORE, visitFCMPG, visitFCMPL, visitFCONST, visitFDIV, visitFieldInstruction, visitFieldOrMethod, visitFLOAD, visitFMUL, visitFNEG, visitFREM, visitFRETURN, visitFSTORE, visitFSUB, visitGETFIELD, visitGETSTATIC, visitGOTO_W, visitGOTO, visitGotoInstruction, visitI2B, visitI2C, visitI2D, visitI2F, visitI2L, visitI2S, visitIADD, visitIALOAD, visitIAND, visitIASTORE, visitICONST, visitIDIV, visitIF_ACMPEQ, visitIF_ACMPNE, visitIF_ICMPEQ, visitIF_ICMPGE, visitIF_ICMPGT, visitIF_ICMPLE, visitIF_ICMPLT, visitIF_ICMPNE, visitIFEQ, visitIFGE, visitIFGT, visitIfInstruction, visitIFLE, visitIFLT, visitIFNE, visitIFNONNULL, visitIFNULL, visitIINC, visitILOAD, visitIMPDEP1, visitIMPDEP2, visitIMUL, visitINEG, visitINSTANCEOF, visitInvokeInstruction, visitIOR, visitIREM, visitIRETURN, visitISHL, visitISHR, visitISTORE, visitISUB, visitIUSHR, visitIXOR, visitJSR_W, visitJSR, visitJsrInstruction, visitL2D, visitL2F, visitL2I, visitLADD, visitLALOAD, visitLAND, visitLASTORE, visitLCMP, visitLCONST, visitLDC, visitLDC2_W, visitLDIV, visitLLOAD, visitLMUL, visitLNEG, visitLoadClass, visitLoadInstruction, visitLocalVariableInstruction, visitLOOKUPSWITCH, visitLOR, visitLREM, visitLRETURN, visitLSHL, visitLSHR, visitLSTORE, visitLSUB, visitLUSHR, visitLXOR, visitMONITORENTER, visitMONITOREXIT, visitMULTIANEWARRAY, visitNEW, visitNEWARRAY, visitNOP, visitPOP, visitPOP2, visitPopInstruction, visitPushInstruction, visitRET, visitRETURN, visitReturnInstruction, visitSALOAD, visitSASTORE, visitSelect, visitSIPUSH, visitStackConsumer, visitStackInstruction, visitStackProducer, visitStoreInstruction, visitSWAP, visitTABLESWITCH, visitTypedInstruction, visitUnconditionalBranch, visitVariableLengthInstruction
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

resourceTracker

private StreamResourceTracker resourceTracker

stream

private Stream stream

location

private Location location
Constructor Detail

StreamFrameModelingVisitor

public StreamFrameModelingVisitor(org.apache.bcel.generic.ConstantPoolGen cpg,
                                  StreamResourceTracker resourceTracker,
                                  Stream stream)
Method Detail

transferInstruction

public void transferInstruction(org.apache.bcel.generic.InstructionHandle handle,
                                BasicBlock basicBlock)
Description copied from class: ResourceValueFrameModelingVisitor
Subclasses must override this to model the effect of the given instruction on the current frame.

Specified by:
transferInstruction in class ResourceValueFrameModelingVisitor

instanceEscapes

protected boolean instanceEscapes(org.apache.bcel.generic.InvokeInstruction inv,
                                  int instanceArgNum)
Description copied from class: ResourceValueFrameModelingVisitor
Override this to check for methods that it is legal to pass the instance to without the instance escaping. By default, we consider all methods to be possible escape routes.

Overrides:
instanceEscapes in class ResourceValueFrameModelingVisitor
Parameters:
inv - the InvokeInstruction to which the resource instance is passed as an argument
instanceArgNum - the first argument the instance is passed in