Package edu.umd.cs.findbugs
Class FuzzyBugComparator
- java.lang.Object
-
- edu.umd.cs.findbugs.FuzzyBugComparator
-
- All Implemented Interfaces:
WarningComparator
,java.io.Serializable
,java.util.Comparator<BugInstance>
public class FuzzyBugComparator extends java.lang.Object implements WarningComparator
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:
BugInstance
,VersionInsensitiveBugComparator
, Serialized Form
-
-
Constructor Summary
Constructors Constructor Description FuzzyBugComparator()
Map of class hashes to canonicate class names used for comparison purposes.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description int
compare(BugInstance lhs, BugInstance rhs)
int
compareClasses(BugCollection lhsCollection, BugCollection rhsCollection, ClassAnnotation lhsClass, ClassAnnotation rhsClass)
int
compareClassesByName(BugCollection lhsCollection, BugCollection rhsCollection, java.lang.String lhsClassName, java.lang.String rhsClassName)
int
compareMethods(BugCollection lhsCollection, BugCollection rhsCollection, MethodAnnotation lhsMethod, MethodAnnotation rhsMethod)
int
compareSourceLines(BugCollection lhsCollection, BugCollection rhsCollection, SourceLineAnnotation lhs, SourceLineAnnotation rhs)
Compare source line annotations.static boolean
ignore(BugAnnotation annotation)
void
registerBugCollection(BugCollection bugCollection)
Register a BugCollection.void
setClassNameRewriter(ClassNameRewriter classNameRewriter)
-
-
-
Method Detail
-
registerBugCollection
public void registerBugCollection(BugCollection bugCollection)
Register a BugCollection. This allows us to find the class and method hashes for BugInstances to be compared.- Parameters:
bugCollection
- a BugCollection
-
setClassNameRewriter
public void setClassNameRewriter(ClassNameRewriter classNameRewriter)
- Specified by:
setClassNameRewriter
in interfaceWarningComparator
-
compare
public int compare(BugInstance lhs, BugInstance rhs)
- Specified by:
compare
in interfacejava.util.Comparator<BugInstance>
- Specified by:
compare
in interfaceWarningComparator
-
compareClasses
public int compareClasses(BugCollection lhsCollection, BugCollection rhsCollection, ClassAnnotation lhsClass, ClassAnnotation rhsClass)
-
compareClassesByName
public int compareClassesByName(BugCollection lhsCollection, BugCollection rhsCollection, java.lang.String lhsClassName, java.lang.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:
rhsCollection
- lhs BugCollectionlhsCollection
- rhs BugCollectionlhs
- a SourceLineAnnotationrhs
- another SourceLineAnnotation- Returns:
- comparison of lhs and rhs
-
ignore
public static boolean ignore(BugAnnotation annotation)
-
-