Class StreamFrameModelingVisitor
java.lang.Object
edu.umd.cs.findbugs.ba.AbstractFrameModelingVisitor<ResourceValue, ResourceValueFrame>
edu.umd.cs.findbugs.ba.ResourceValueFrameModelingVisitor
edu.umd.cs.findbugs.detect.StreamFrameModelingVisitor
- All Implemented Interfaces:
org.apache.bcel.generic.Visitor
A visitor to model the effect of instructions on the status of the resource
(in this case, Streams).
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate Locationprivate final StreamResourceTrackerprivate final StreamFields inherited from class AbstractFrameModelingVisitor
cpg -
Constructor Summary
ConstructorsConstructorDescriptionStreamFrameModelingVisitor(org.apache.bcel.generic.ConstantPoolGen cpg, StreamResourceTracker resourceTracker, Stream stream) -
Method Summary
Modifier and TypeMethodDescriptionprotected booleaninstanceEscapes(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.voidtransferInstruction(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 ResourceValueFrameModelingVisitor
getDefaultValue, visitAASTORE, visitARETURN, visitCHECKCAST, visitINVOKEINTERFACE, visitINVOKESPECIAL, visitINVOKESTATIC, visitINVOKEVIRTUAL, visitPUTFIELD, visitPUTSTATICMethods inherited from class AbstractFrameModelingVisitor
analyzeInstruction, getCPG, getFrame, getLocation, getNumWordsConsumed, getNumWordsProduced, handleLoadInstruction, handleNormalInstruction, handleStoreInstruction, modelInstruction, modelNormalInstruction, setFrameAndLocation, visitAALOAD, visitACONST_NULL, visitAllocationInstruction, visitALOAD, visitANEWARRAY, visitArithmeticInstruction, visitArrayInstruction, visitARRAYLENGTH, visitASTORE, visitATHROW, visitBALOAD, visitBASTORE, visitBIPUSH, visitBranchInstruction, visitBREAKPOINT, visitCALOAD, visitCASTORE, visitConstantPushInstruction, visitConversionInstruction, visitConversionInstruction2, visitCPInstruction, visitD2F, visitD2I, visitD2L, visitDADD, visitDALOAD, visitDASTORE, visitDCMPG, visitDCMPL, visitDCONST, visitDDIV, visitDLOAD, visitDMUL, visitDNEG, visitDREM, visitDRETURN, visitDSTORE, visitDSUB, visitDUP, visitDUP_X1, visitDUP_X2, visitDUP2, visitDUP2_X1, visitDUP2_X2, visitExceptionThrower, visitF2D, visitF2I, visitF2L, visitFADD, visitFALOAD, visitFASTORE, visitFCMPG, visitFCMPL, visitFCONST, visitFDIV, visitFieldInstruction, visitFieldOrMethod, visitFLOAD, visitFMUL, visitFNEG, visitFREM, visitFRETURN, visitFSTORE, visitFSUB, visitGETFIELD, visitGETSTATIC, visitGOTO, visitGOTO_W, 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, visitINVOKEDYNAMIC, visitInvokeInstruction, visitIOR, visitIREM, visitIRETURN, visitISHL, visitISHR, visitISTORE, visitISUB, visitIUSHR, visitIXOR, visitJSR, visitJSR_W, 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, visitNONNULL2Z, visitNOP, visitNULL2Z, visitPOP, visitPOP2, visitPopInstruction, visitPushInstruction, visitRET, visitRETURN, visitReturnInstruction, visitSALOAD, visitSASTORE, visitSelect, visitSIPUSH, visitStackConsumer, visitStackInstruction, visitStackProducer, visitStoreInstruction, visitSWAP, visitTABLESWITCH, visitTypedInstruction, visitUnconditionalBranch, visitVariableLengthInstruction
-
Field Details
-
resourceTracker
-
stream
-
location
-
-
Constructor Details
-
StreamFrameModelingVisitor
public StreamFrameModelingVisitor(org.apache.bcel.generic.ConstantPoolGen cpg, StreamResourceTracker resourceTracker, Stream stream)
-
-
Method Details
-
transferInstruction
public void transferInstruction(org.apache.bcel.generic.InstructionHandle handle, BasicBlock basicBlock) throws DataflowAnalysisException Description copied from class:ResourceValueFrameModelingVisitorSubclasses must override this to model the effect of the given instruction on the current frame.- Specified by:
transferInstructionin classResourceValueFrameModelingVisitor- Throws:
DataflowAnalysisException
-
instanceEscapes
protected boolean instanceEscapes(org.apache.bcel.generic.InvokeInstruction inv, int instanceArgNum) Description copied from class:ResourceValueFrameModelingVisitorOverride 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:
instanceEscapesin classResourceValueFrameModelingVisitor- Parameters:
inv- the InvokeInstruction to which the resource instance is passed as an argumentinstanceArgNum- the first argument the instance is passed in
-