Class FindUnreleasedLock.LockResourceTracker

java.lang.Object
edu.umd.cs.findbugs.detect.FindUnreleasedLock.LockResourceTracker
All Implemented Interfaces:
ResourceTracker<Lock>
Enclosing class:
FindUnreleasedLock

class FindUnreleasedLock.LockResourceTracker extends Object implements ResourceTracker<Lock>
  • Field Details

  • Constructor Details

  • Method Details

    • isResourceCreation

      public Lock isResourceCreation(BasicBlock basicBlock, org.apache.bcel.generic.InstructionHandle handle, org.apache.bcel.generic.ConstantPoolGen cpg) throws DataflowAnalysisException
      Description copied from interface: ResourceTracker
      Determine if the given instruction is the site where a resource is created.
      Specified by:
      isResourceCreation in interface ResourceTracker<Lock>
      Parameters:
      basicBlock - basic block containing the instruction
      handle - the instruction
      cpg - the ConstantPoolGen for the method
      Returns:
      an opaque Resource object if it is a creation site, or null if it is not a creation site
      Throws:
      DataflowAnalysisException
    • mightCloseResource

      public boolean mightCloseResource(BasicBlock basicBlock, org.apache.bcel.generic.InstructionHandle handle, org.apache.bcel.generic.ConstantPoolGen cpg) throws DataflowAnalysisException
      Description copied from interface: ResourceTracker
      Determine if the given instruction is the site where a resource is closed.
      Specified by:
      mightCloseResource in interface ResourceTracker<Lock>
      Parameters:
      basicBlock - basic block containing the instruction
      handle - the instruction
      cpg - the ConstantPoolGen for the method
      Returns:
      true if the resource is closed here, false otherwise
      Throws:
      DataflowAnalysisException
    • isResourceClose

      public boolean isResourceClose(BasicBlock basicBlock, org.apache.bcel.generic.InstructionHandle handle, org.apache.bcel.generic.ConstantPoolGen cpg, Lock resource, ResourceValueFrame frame) throws DataflowAnalysisException
      Description copied from interface: ResourceTracker
      Determine if the given instruction is the site where a resource is closed.
      Specified by:
      isResourceClose in interface ResourceTracker<Lock>
      Parameters:
      basicBlock - basic block containing the instruction
      handle - the instruction
      cpg - the ConstantPoolGen for the method
      resource - the resource, as returned by isResourceCreation()
      frame - the ResourceValueFrame representing the stack prior to executing the instruction
      Returns:
      true if the resource is closed here, false otherwise
      Throws:
      DataflowAnalysisException
    • createVisitor

      public ResourceValueFrameModelingVisitor createVisitor(Lock resource, org.apache.bcel.generic.ConstantPoolGen cpg)
      Description copied from interface: ResourceTracker
      Create a ResourceValueFrameModelingVisitor to model the effect of instructions on the state of the resource.
      Specified by:
      createVisitor in interface ResourceTracker<Lock>
      Parameters:
      resource - the resource we are tracking
      cpg - the ConstantPoolGen of the method
      Returns:
      a ResourceValueFrameModelingVisitor
    • ignoreImplicitExceptions

      public boolean ignoreImplicitExceptions(Lock resource)
      Description copied from interface: ResourceTracker
      Determine whether the analysis should ignore exception edges on which only implicit exceptions are propagated. This allows different resource types to be tracked with varying precision. For example, we might want to ignore implicit exceptions for stream objects, but treat them as significant for database resources.
      Specified by:
      ignoreImplicitExceptions in interface ResourceTracker<Lock>
      Parameters:
      resource - the resource being tracked
      Returns:
      true if implicit exceptions are significant, false if they should be ignore
    • ignoreExceptionEdge

      public boolean ignoreExceptionEdge(Edge edge, Lock resource, org.apache.bcel.generic.ConstantPoolGen cpg)
      Description copied from interface: ResourceTracker
      Determine whether the analysis should ignore given exception edge. This allows the analysis to customize which kinds of exceptions are significant.
      Specified by:
      ignoreExceptionEdge in interface ResourceTracker<Lock>
      Parameters:
      edge - the exception edge
      resource - the resource
      cpg - the ConstantPoolGen
      Returns:
      true if exception edge should be ignored, false if it should be considered
    • isParamInstance

      public boolean isParamInstance(Lock resource, int slot)
      Description copied from interface: ResourceTracker
      Return if the given parameter slot contains the resource instance upon entry to the method. This is for resources passed as parameters.
      Specified by:
      isParamInstance in interface ResourceTracker<Lock>
      Parameters:
      resource - the resource
      slot - the local variable slot
      Returns:
      true if the slot contains the resource instance, false otherwise
    • toInvokeInstruction

      private org.apache.bcel.generic.InvokeInstruction toInvokeInstruction(org.apache.bcel.generic.Instruction ins)