Class BuildObligationPolicyDatabase

java.lang.Object
edu.umd.cs.findbugs.detect.BuildObligationPolicyDatabase
All Implemented Interfaces:
Detector2, FirstPassDetector, NonReportingDetector, Priorities

public class BuildObligationPolicyDatabase extends Object implements Detector2, NonReportingDetector
Build the ObligationPolicyDatabase used by ObligationAnalysis. We preload the database with some known resources types needing to be released, and augment the database with additional entries discovered through scanning referenced classes for annotations.
  • Field Details

    • INFER_CLOSE_METHODS

      public static final boolean INFER_CLOSE_METHODS
    • DEBUG_ANNOTATIONS

      private static final boolean DEBUG_ANNOTATIONS
    • DUMP_DB

      private static final boolean DUMP_DB
    • reporter

      private final BugReporter reporter
    • database

      private final ObligationPolicyDatabase database
    • willClose

      private final ClassDescriptor willClose
    • willNotClose

      private final ClassDescriptor willNotClose
    • willCloseWhenClosed

      private final ClassDescriptor willCloseWhenClosed
    • cleanupObligation

      private final ClassDescriptor cleanupObligation
    • createsObligation

      private final ClassDescriptor createsObligation
    • dischargesObligation

      private final ClassDescriptor dischargesObligation
    • sawAnnotationsInApplicationCode

      private boolean sawAnnotationsInApplicationCode
      Did we see any WillClose, WillNotClose, or WillCloseWhenClosed annotations in application code?
  • Constructor Details

    • BuildObligationPolicyDatabase

      public BuildObligationPolicyDatabase(BugReporter bugReporter)
  • Method Details

    • visitClass

      public void visitClass(ClassDescriptor classDescriptor) throws CheckedAnalysisException
      Description copied from interface: Detector2
      Visit a class.
      Specified by:
      visitClass in interface Detector2
      Parameters:
      classDescriptor - descriptor naming the class to visit
      Throws:
      CheckedAnalysisException - if an exception occurs during analysis
    • addObligations

      public void addObligations(XMethod xmethod)
      Parameters:
      xmethod -
    • finishPass

      public void finishPass()
      Description copied from interface: Detector2
      This method is called at the end of the analysis pass.
      Specified by:
      finishPass in interface Detector2
    • getDetectorClassName

      public String getDetectorClassName()
      Description copied from interface: Detector2
      Get the name of the detector class.
      Specified by:
      getDetectorClassName in interface Detector2
      Returns:
      the name of the detector class.
    • addBuiltInPolicies

      private void addBuiltInPolicies()
    • addFileStreamEntries

      private void addFileStreamEntries(String kind)
      General method for adding entries for File InputStream/OutputStream/Reader/Writer classes.
    • addParameterDeletesObligationDatabaseEntry

      private void addParameterDeletesObligationDatabaseEntry(XMethod xmethod, Obligation obligation, ObligationPolicyDatabaseEntryType entryType)
      Add an appropriate policy database entry for parameters marked with the WillClose annotation.
      Parameters:
      xmethod - a method
      obligation - the Obligation deleted by the method
      entryType - type of entry (STRONG or WEAK)
    • handleWillCloseWhenClosed

      private void handleWillCloseWhenClosed(XMethod xmethod, Obligation deletedObligation)
      Handle a method with a WillCloseWhenClosed parameter annotation.
    • scanForResourceTypes

      private void scanForResourceTypes()