Class ClassHash

java.lang.Object
edu.umd.cs.findbugs.ba.ClassHash
All Implemented Interfaces:
XMLWriteable, Comparable<ClassHash>

public class ClassHash extends Object implements XMLWriteable, Comparable<ClassHash>
Compute a hash of method names and signatures. This allows us to find out when a class has been renamed, but not changed in any other obvious way.
Author:
David Hovemeyer
  • Field Details

    • CLASS_HASH_ELEMENT_NAME

      public static final String CLASS_HASH_ELEMENT_NAME
      XML element name for a ClassHash.
      See Also:
    • METHOD_HASH_ELEMENT_NAME

      public static final String METHOD_HASH_ELEMENT_NAME
      XML element name for a MethodHash.
      See Also:
  • Constructor Details

    • ClassHash

      public ClassHash()
      Constructor.
    • ClassHash

      public ClassHash(String className, byte[] classHash)
      Constructor.
      Parameters:
      classHash - pre-computed class hash
  • Method Details

    • setMethodHash

      public void setMethodHash(XMethod method, byte[] methodHash)
      Set method hash for given method.
      Parameters:
      method - the method
      methodHash - the method hash
    • getClassName

      public String getClassName()
      Returns:
      Returns the className.
    • getClassHash

      public byte[] getClassHash()
      Get class hash.
      Returns:
      the class hash
    • setClassHash

      public void setClassHash(byte[] classHash)
      Set class hash.
      Parameters:
      classHash - the class hash value to set
    • getMethodHash

      public MethodHash getMethodHash(XMethod method)
      Get method hash for given method.
      Parameters:
      method - the method
      Returns:
      the MethodHash
    • computeHash

      public ClassHash computeHash(org.apache.bcel.classfile.JavaClass javaClass)
      Compute hash for given class and all of its methods.
      Parameters:
      javaClass - the class
      Returns:
      this object
    • writeXML

      public void writeXML(XMLOutput xmlOutput) throws IOException
      Description copied from interface: XMLWriteable
      Write this object to given XMLOutput.
      Specified by:
      writeXML in interface XMLWriteable
      Parameters:
      xmlOutput - the XMLOutput for the document
      Throws:
      IOException
    • hashToString

      public static String hashToString(byte[] hash)
      Convert a hash to a string of hex digits.
      Parameters:
      hash - the hash
      Returns:
      a String representation of the hash
    • stringToHash

      public static byte[] stringToHash(String s)
      Convert a string of hex digits to a hash.
      Parameters:
      s - string of hex digits
      Returns:
      the hash value represented by the string
    • isSameHash

      public boolean isSameHash(ClassHash other)
      Return whether or not this class hash has the same hash value as the one given.
      Parameters:
      other - another ClassHash
      Returns:
      true if the hash values are the same, false if not
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object
    • equals

      public boolean equals(Object o)
      Overrides:
      equals in class Object
    • compareTo

      public int compareTo(ClassHash other)
      Specified by:
      compareTo in interface Comparable<ClassHash>
    • toString

      public String toString()
      Overrides:
      toString in class Object