Class BuildObligationPolicyDatabase

  • All Implemented Interfaces:
    Detector2, FirstPassDetector, NonReportingDetector, Priorities

    public class BuildObligationPolicyDatabase
    extends java.lang.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 Detail

      • 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
      • sawAnnotationsInApplicationCode

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

      • BuildObligationPolicyDatabase

        public BuildObligationPolicyDatabase​(BugReporter bugReporter)
    • Method Detail

      • loadDatabase

        public void loadDatabase​(java.net.URL u)
      • 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
      • addBuiltInPolicies

        private void addBuiltInPolicies()
      • addFileStreamEntries

        private void addFileStreamEntries​(java.lang.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()