Class ClassFeatureSet

  • All Implemented Interfaces:
    XMLWriteable

    public class ClassFeatureSet
    extends java.lang.Object
    implements XMLWriteable
    Features of a class which may be used to identify it if it is renamed or modified.
    Author:
    David Hovemeyer
    • Field Detail

      • MIN_CODE_LENGTH

        public static final int MIN_CODE_LENGTH
        Minimum code length required to add a CodeLength feature.
        See Also:
        Constant Field Values
      • MIN_FEATURES

        public static final int MIN_FEATURES
        Minimum number of features which must be present in order to declare two classes similar.
        See Also:
        Constant Field Values
      • MIN_MATCH

        public static final double MIN_MATCH
        Minimum similarity required to declare two classes similar.
        See Also:
        Constant Field Values
      • EXACT_CLASS_NAME_MATCH

        public static final double EXACT_CLASS_NAME_MATCH
        Similarity of classes which don't have enough features to match exactly, but whose class names match exactly.
        See Also:
        Constant Field Values
      • FEATURE_ELEMENT_NAME

        public static final java.lang.String FEATURE_ELEMENT_NAME
        See Also:
        Constant Field Values
    • Constructor Detail

      • ClassFeatureSet

        public ClassFeatureSet()
        Constructor. Creates an empty feature set.
    • Method Detail

      • initialize

        public ClassFeatureSet initialize​(org.apache.bcel.classfile.JavaClass javaClass)
        Initialize from given JavaClass.
        Parameters:
        javaClass - the JavaClass
        Returns:
        this object
      • getClassName

        public java.lang.String getClassName()
        Returns:
        Returns the className.
      • setClassName

        public void setClassName​(java.lang.String className)
        Parameters:
        className - The className to set.
      • isInterface

        public boolean isInterface()
        Returns:
        Returns the isInterface.
      • setInterface

        public void setInterface​(boolean isInterface)
        Parameters:
        isInterface - The isInterface to set.
      • getNumFeatures

        public int getNumFeatures()
      • addFeature

        public void addFeature​(java.lang.String feature)
      • featureIterator

        public java.util.Iterator<java.lang.String> featureIterator()
      • hasFeature

        public boolean hasFeature​(java.lang.String feature)
      • transformClassName

        public static java.lang.String transformClassName​(java.lang.String className)
        Transform a class name by stripping its package name.
        Parameters:
        className - a class name
        Returns:
        the transformed class name
      • isUnlikelyToBeRenamed

        public static boolean isUnlikelyToBeRenamed​(java.lang.String pkg)
        Return true if classes in the given package is unlikely to be renamed: e.g., because they are part of a public API.
        Parameters:
        pkg - the package name
        Returns:
        true if classes in the package is unlikely to be renamed
      • transformMethodSignature

        public static java.lang.String transformMethodSignature​(java.lang.String signature)
        Transform a method signature to allow it to be compared even if any of its parameter types are moved to another package.
        Parameters:
        signature - a method signature
        Returns:
        the transformed signature
      • transformSignature

        public static java.lang.String transformSignature​(java.lang.String signature)
        Transform a field or method parameter signature to allow it to be compared even if it is moved to another package.
        Parameters:
        signature - the signature
        Returns:
        the transformed signature
      • main

        public static void main​(java.lang.String[] args)
                         throws java.lang.Exception
        Throws:
        java.lang.Exception
      • writeXML

        public void writeXML​(XMLOutput xmlOutput)
                      throws java.io.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:
        java.io.IOException