Package edu.umd.cs.findbugs
Class FuzzyBugComparator
java.lang.Object
edu.umd.cs.findbugs.FuzzyBugComparator
- All Implemented Interfaces:
WarningComparator,Serializable,Comparator<BugInstance>
A slightly more intellegent way of comparing BugInstances from two versions
to see if they are the "same". Uses class and method hashes to try to handle
renamings, at least for simple cases. (Hashes disabled for the
time being.) Uses opcode context to try to identify code that is the
same, even if it moves within the method. Also compares by bug abbreviation
rather than bug type, since the "same" bug can change type if the context
changes (e.g., "definitely null" to "null on simple path" for a null pointer
dereference). Also, we often change bug types between different versions of
FindBugs.
- Author:
- David Hovemeyer
- See Also:
-
Constructor Summary
ConstructorsConstructorDescriptionMap of class hashes to canonicate class names used for comparison purposes. -
Method Summary
Modifier and TypeMethodDescriptionintcompare(BugInstance lhs, BugInstance rhs) intcompareClasses(BugCollection lhsCollection, BugCollection rhsCollection, ClassAnnotation lhsClass, ClassAnnotation rhsClass) intcompareClassesByName(BugCollection lhsCollection, BugCollection rhsCollection, String lhsClassName, String rhsClassName) intcompareMethods(BugCollection lhsCollection, BugCollection rhsCollection, MethodAnnotation lhsMethod, MethodAnnotation rhsMethod) intcompareSourceLines(BugCollection lhsCollection, BugCollection rhsCollection, SourceLineAnnotation lhs, SourceLineAnnotation rhs) Compare source line annotations.static booleanignore(BugAnnotation annotation) voidregisterBugCollection(BugCollection bugCollection) Register a BugCollection.voidsetClassNameRewriter(ClassNameRewriter classNameRewriter) Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface java.util.Comparator
equals, reversed, thenComparing, thenComparing, thenComparing, thenComparingDouble, thenComparingInt, thenComparingLong
-
Constructor Details
-
FuzzyBugComparator
public FuzzyBugComparator()Map of class hashes to canonicate class names used for comparison purposes.
-
-
Method Details
-
registerBugCollection
Register a BugCollection. This allows us to find the class and method hashes for BugInstances to be compared.- Parameters:
bugCollection- a BugCollection
-
setClassNameRewriter
- Specified by:
setClassNameRewriterin interfaceWarningComparator
-
compare
- Specified by:
comparein interfaceComparator<BugInstance>- Specified by:
comparein interfaceWarningComparator
-
compareClasses
public int compareClasses(BugCollection lhsCollection, BugCollection rhsCollection, ClassAnnotation lhsClass, ClassAnnotation rhsClass) -
compareClassesByName
public int compareClassesByName(BugCollection lhsCollection, BugCollection rhsCollection, String lhsClassName, String rhsClassName) -
compareMethods
public int compareMethods(BugCollection lhsCollection, BugCollection rhsCollection, MethodAnnotation lhsMethod, MethodAnnotation rhsMethod) -
compareSourceLines
public int compareSourceLines(BugCollection lhsCollection, BugCollection rhsCollection, SourceLineAnnotation lhs, SourceLineAnnotation rhs) Compare source line annotations.- Parameters:
lhsCollection- rhs BugCollectionrhsCollection- lhs BugCollectionlhs- a SourceLineAnnotationrhs- another SourceLineAnnotation- Returns:
- comparison of lhs and rhs
-
ignore
-