Class SortedBugCollection

  • All Implemented Interfaces:
    BugCollection, java.lang.Iterable<BugInstance>

    public class SortedBugCollection
    extends java.lang.Object
    implements BugCollection
    An implementation of BugCollection that keeps the BugInstances sorted by class (using the native comparison ordering of BugInstance's compareTo() method as a tie-breaker).
    Author:
    David Hovemeyer
    See Also:
    BugInstance
    • Constructor Detail

      • SortedBugCollection

        public SortedBugCollection​(Project project)
      • SortedBugCollection

        public SortedBugCollection​(java.io.File f)
                            throws java.io.IOException,
                                   org.dom4j.DocumentException
        Throws:
        java.io.IOException
        org.dom4j.DocumentException
      • SortedBugCollection

        public SortedBugCollection()
        Constructor. Creates an empty object.
      • SortedBugCollection

        public SortedBugCollection​(java.util.Comparator<BugInstance> comparator)
        Constructor. Creates an empty object.
      • SortedBugCollection

        public SortedBugCollection​(ProjectStats projectStats)
        Constructor. Creates an empty object given an existing ProjectStats.
        Parameters:
        projectStats - the ProjectStats
      • SortedBugCollection

        public SortedBugCollection​(ProjectStats projectStats,
                                   Project project)
      • SortedBugCollection

        public SortedBugCollection​(ProjectStats projectStats,
                                   java.util.Comparator<BugInstance> comparator)
        Constructor. Creates an empty object given an existing ProjectStats.
        Parameters:
        projectStats - the ProjectStats
        comparator - to use for sorting bug instances
    • Method Detail

      • getTimeStartedLoading

        public long getTimeStartedLoading()
      • getTimeFinishedLoading

        public long getTimeFinishedLoading()
      • getDataSource

        public java.lang.String getDataSource()
      • setAnalysisTimestamp

        public void setAnalysisTimestamp​(long timestamp)
        Description copied from interface: BugCollection
        Set the timestamp for when the analysis was performed.
        Specified by:
        setAnalysisTimestamp in interface BugCollection
        Parameters:
        timestamp - the analysis timestamp.
      • addAll

        public void addAll​(java.util.Collection<BugInstance> collection)
        Add a Collection of BugInstances to this BugCollection object. This just calls add(BugInstance) for each instance in the input collection.
        Parameters:
        collection - the Collection of BugInstances to add
      • addAll

        public void addAll​(java.util.Collection<BugInstance> collection,
                           boolean updateActiveTime)
        Add a Collection of BugInstances to this BugCollection object.
        Parameters:
        collection - the Collection of BugInstances to add
        updateActiveTime - true if active time of added BugInstances should be updated to match collection: false if not
      • add

        public boolean add​(BugInstance bugInstance)
        Add a BugInstance to this BugCollection. This just calls add(bugInstance, true).
        Specified by:
        add in interface BugCollection
        Parameters:
        bugInstance - the BugInstance
        Returns:
        true if the BugInstance was added, or false if a matching BugInstance was already in the BugCollection
      • addError

        public void addError​(java.lang.String message)
        Add an analysis error.
        Specified by:
        addError in interface BugCollection
        Parameters:
        message - the error message
      • readXML

        public void readXML​(java.lang.String fileName)
                     throws java.io.IOException,
                            org.dom4j.DocumentException
        Read XML data from given file into this object, populating given Project as a side effect.
        Specified by:
        readXML in interface BugCollection
        Parameters:
        fileName - name of the file to read
        Throws:
        java.io.IOException
        org.dom4j.DocumentException
      • readXML

        public void readXML​(java.io.File file)
                     throws java.io.IOException,
                            org.dom4j.DocumentException
        Read XML data from given file into this object, populating given Project as a side effect.
        Parameters:
        file - the file
        Throws:
        java.io.IOException
        org.dom4j.DocumentException
      • readXML

        public void readXML​(java.net.URL u)
                     throws java.io.IOException,
                            org.dom4j.DocumentException
        Throws:
        java.io.IOException
        org.dom4j.DocumentException
      • readXML

        public void readXML​(@WillClose
                            java.io.InputStream in,
                            java.io.File base)
                     throws java.io.IOException,
                            org.dom4j.DocumentException
        Read XML data from given input stream into this object, populating the Project as a side effect. An attempt will be made to close the input stream (even if an exception is thrown).
        Parameters:
        in - the InputStream
        Throws:
        java.io.IOException
        org.dom4j.DocumentException
      • readXML

        public void readXML​(@WillClose
                            java.io.InputStream in)
                     throws java.io.IOException,
                            org.dom4j.DocumentException
        Description copied from interface: BugCollection
        Read XML data from given input stream into this object, populating the Project as a side effect. An attempt will be made to close the input stream (even if an exception is thrown).
        Specified by:
        readXML in interface BugCollection
        Parameters:
        in - the InputStream
        Throws:
        java.io.IOException
        org.dom4j.DocumentException
      • readXML

        public void readXML​(@WillClose
                            java.io.Reader reader)
                     throws java.io.IOException,
                            org.dom4j.DocumentException
        Description copied from interface: BugCollection
        Read XML data from given reader into this object, populating the Project as a side effect. An attempt will be made to close the reader (even if an exception is thrown).
        Specified by:
        readXML in interface BugCollection
        Parameters:
        reader - the Reader
        Throws:
        java.io.IOException
        org.dom4j.DocumentException
      • writeXML

        public void writeXML​(java.io.OutputStream out)
                      throws java.io.IOException
        Description copied from interface: BugCollection
        Write the BugCollection to given output stream as XML using a UTF8 encoding. The output stream will be closed, even if an exception is thrown.
        Specified by:
        writeXML in interface BugCollection
        Parameters:
        out - the OutputStream to write to
        Throws:
        java.io.IOException
      • writeXML

        public void writeXML​(java.lang.String fileName)
                      throws java.io.IOException
        Write this BugCollection to a file as XML.
        Specified by:
        writeXML in interface BugCollection
        Parameters:
        fileName - the file to write to
        Throws:
        java.io.IOException
      • writeXML

        public void writeXML​(java.io.File file)
                      throws java.io.IOException
        Write this BugCollection to a file as XML.
        Parameters:
        file - the file to write to
        Throws:
        java.io.IOException
      • toDocument

        public org.dom4j.Document toDocument()
        Convert the BugCollection into a dom4j Document object.
        Specified by:
        toDocument in interface BugCollection
        Returns:
        the Document representing the BugCollection as a dom4j tree
      • writeXML

        public void writeXML​(@WillClose
                             java.io.Writer out)
                      throws java.io.IOException
        Write the BugCollection to given output stream as XML. The output stream will be closed, even if an exception is thrown.
        Specified by:
        writeXML in interface BugCollection
        Parameters:
        out - the OutputStream to write to
        Throws:
        java.io.IOException
      • writePrologue

        public void writePrologue​(XMLOutput xmlOutput)
                           throws java.io.IOException
        Specified by:
        writePrologue in interface BugCollection
        Throws:
        java.io.IOException
      • computeBugHashes

        public void computeBugHashes()
      • writeXML

        public void writeXML​(@WillClose
                             XMLOutput xmlOutput)
                      throws java.io.IOException
        Write the BugCollection to an XMLOutput object. The finish() method of the XMLOutput object is guaranteed to be called.

        To write the SummaryHTML element, set property findbugs.report.SummaryHTML to "true".

        Specified by:
        writeXML in interface BugCollection
        Parameters:
        xmlOutput - the XMLOutput object
        Throws:
        java.io.IOException
      • writeEpilogue

        public void writeEpilogue​(XMLOutput xmlOutput)
                           throws java.io.IOException
        Specified by:
        writeEpilogue in interface BugCollection
        Throws:
        java.io.IOException
      • cloneAll

        public static void cloneAll​(java.util.Collection<BugInstance> dest,
                                    java.util.Collection<BugInstance> source)
        Clone all of the BugInstance objects in the source Collection and add them to the destination Collection.
        Parameters:
        dest - the destination Collection
        source - the source Collection
      • add

        public boolean add​(BugInstance bugInstance,
                           boolean updateActiveTime)
        Description copied from interface: BugCollection
        Add a BugInstance to this BugCollection.
        Specified by:
        add in interface BugCollection
        Parameters:
        bugInstance - the BugInstance
        updateActiveTime - true if the warning's active time should be updated to include the collection's current time
        Returns:
        true if the BugInstance was added, or false if a matching BugInstance was already in the BugCollection
      • remove

        public boolean remove​(BugInstance bugInstance)
      • iterator

        public java.util.Iterator<BugInstance> iterator()
        Description copied from interface: BugCollection
        Return an Iterator over all the BugInstance objects in the BugCollection.
        Specified by:
        iterator in interface BugCollection
        Specified by:
        iterator in interface java.lang.Iterable<BugInstance>
      • addError

        public void addError​(java.lang.String message,
                             java.lang.Throwable exception)
      • addError

        public void addError​(AnalysisError error)
        Description copied from interface: BugCollection
        Add an analysis error.
        Specified by:
        addError in interface BugCollection
        Parameters:
        error - the AnalysisError object to add
      • clearErrors

        public void clearErrors()
      • addMissingClass

        public void addMissingClass​(java.lang.String className)
        Description copied from interface: BugCollection
        Add a missing class message.
        Specified by:
        addMissingClass in interface BugCollection
        Parameters:
        className - the missing class message
      • getErrors

        public java.util.Collection<? extends AnalysisError> getErrors()
      • missingClassIterator

        public java.util.Iterator<java.lang.String> missingClassIterator()
      • contains

        public boolean contains​(BugInstance bugInstance)
      • getSummaryHTML

        public java.lang.String getSummaryHTML()
                                        throws java.io.IOException
        Throws:
        java.io.IOException
      • lookupFromUniqueId

        @Deprecated
        public BugInstance lookupFromUniqueId​(java.lang.String uniqueId)
        Deprecated.
        Description copied from interface: BugCollection
        Look up a BugInstance by its unique id.
        Specified by:
        lookupFromUniqueId in interface BugCollection
        Parameters:
        uniqueId - the BugInstance's unique id.
        Returns:
        the BugInstance with the given unique id, or null if there is no such BugInstance This is deprecated; uniqueIDs are not persistent.
      • isMultiversion

        public boolean isMultiversion()
        Returns whether this bug collection contains results from multiple analysis runs, either of different version of the software or from different versions of FindBugs.
        Specified by:
        isMultiversion in interface BugCollection
      • getSequenceNumber

        public long getSequenceNumber()
        Description copied from interface: BugCollection
        Get the sequence number of the BugCollection. This value represents the number of times the user has analyzed a different version of the application and updated the historical bug collection using the UpdateBugCollection class.
        Specified by:
        getSequenceNumber in interface BugCollection
        Returns:
        the sequence number
      • clearBugInstances

        public void clearBugInstances()
      • getReleaseName

        public java.lang.String getReleaseName()
        Description copied from interface: BugCollection
        Get the current release name.
        Specified by:
        getReleaseName in interface BugCollection
        Returns:
        current release name
      • setReleaseName

        public void setReleaseName​(java.lang.String releaseName)
        Description copied from interface: BugCollection
        Set the current release name.
        Specified by:
        setReleaseName in interface BugCollection
        Parameters:
        releaseName - the current release name
      • addAppVersion

        public void addAppVersion​(AppVersion appVersion)
        Description copied from interface: BugCollection
        Add an AppVersion representing a version of the analyzed application.
        Specified by:
        addAppVersion in interface BugCollection
        Parameters:
        appVersion - the AppVersion
      • clearAppVersions

        public void clearAppVersions()
        Description copied from interface: BugCollection
        Clear all AppVersions representing previously-analyzed versions of the application.
        Specified by:
        clearAppVersions in interface BugCollection
      • trimAppVersions

        public void trimAppVersions​(long numberToRetain)
      • setTimestamp

        public void setTimestamp​(long timestamp)
        Description copied from interface: BugCollection
        Get the timestamp for the analyzed code (when it was compiled)
        Specified by:
        setTimestamp in interface BugCollection
        Parameters:
        timestamp - the timestamp.
      • getTimestamp

        public long getTimestamp()
        Description copied from interface: BugCollection
        Get the timestamp for the analyzed code (when it was compiled)
        Specified by:
        getTimestamp in interface BugCollection
      • getClassFeatureSet

        public ClassFeatureSet getClassFeatureSet​(java.lang.String className)
      • classFeatureSetIterator

        public java.util.Iterator<ClassFeatureSet> classFeatureSetIterator()
      • setWithMessages

        public void setWithMessages​(boolean withMessages)
        Description copied from interface: BugCollection
        Set whether textual messages should be added to any generated XML
        Specified by:
        setWithMessages in interface BugCollection
      • getWithMessages

        public boolean getWithMessages()
        Description copied from interface: BugCollection
        Return whether textual messages will be added to any generated XML
        Specified by:
        getWithMessages in interface BugCollection
      • findBug

        public BugInstance findBug​(java.lang.String instanceHash,
                                   java.lang.String bugType,
                                   int lineNumber)
        Specified by:
        findBug in interface BugCollection
      • setAnalysisVersion

        public void setAnalysisVersion​(java.lang.String version)
        Description copied from interface: BugCollection
        Set the version of FindBugs used to perform the analysis
        Specified by:
        setAnalysisVersion in interface BugCollection
        Parameters:
        version - the analysis version.
      • getAnalysisVersion

        public java.lang.String getAnalysisVersion()
      • progessMonitoredInputStream

        public java.io.InputStream progessMonitoredInputStream​(java.io.File f,
                                                               java.lang.String msg)
                                                        throws java.io.IOException
        Throws:
        java.io.IOException
      • progessMonitoredInputStream

        public java.io.InputStream progessMonitoredInputStream​(java.net.URLConnection c,
                                                               java.lang.String msg)
                                                        throws java.io.IOException
        Throws:
        java.io.IOException
      • progressMonitoredInputStream

        public java.io.InputStream progressMonitoredInputStream​(java.io.InputStream in,
                                                                int length,
                                                                java.lang.String msg)
      • wrapGzip

        public java.io.InputStream wrapGzip​(java.io.InputStream in,
                                            java.lang.Object source)
      • setMinimalXML

        public void setMinimalXML​(boolean minimalXML)
        Description copied from interface: BugCollection
        Set whether we should minimize XML
        Specified by:
        setMinimalXML in interface BugCollection
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object