edu.umd.cs.findbugs

Class FuzzyBugComparator

public class FuzzyBugComparator extends 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

Constructor Summary
FuzzyBugComparator()
Map of class hashes to canonicate class names used for comparison purposes.
Method Summary
intcompare(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)

Constructor Detail

FuzzyBugComparator

public FuzzyBugComparator()
Map of class hashes to canonicate class names used for comparison purposes.

Method Detail

compare

public int compare(BugInstance lhs, BugInstance rhs)

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: rhsCollection lhs BugCollection lhsCollection rhs BugCollection lhs a SourceLineAnnotation rhs another SourceLineAnnotation

Returns: comparison of lhs and rhs

ignore

public static boolean ignore(BugAnnotation annotation)

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)
FindBugs™ is licenced under the LGPL. Copyright © 2006 University of Maryland.