Package edu.umd.cs.findbugs.model
Class ClassFeatureSet
- java.lang.Object
-
- edu.umd.cs.findbugs.model.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 Summary
Fields Modifier and Type Field Description static java.lang.StringCLASS_NAME_KEYstatic java.lang.StringCODE_LENGTH_KEYstatic java.lang.StringELEMENT_NAMEstatic doubleEXACT_CLASS_NAME_MATCHSimilarity of classes which don't have enough features to match exactly, but whose class names match exactly.static java.lang.StringFEATURE_ELEMENT_NAMEstatic java.lang.StringFIELD_NAME_KEYstatic java.lang.StringMETHOD_NAME_KEYstatic intMIN_CODE_LENGTHMinimum code length required to add a CodeLength feature.static intMIN_FEATURESMinimum number of features which must be present in order to declare two classes similar.static doubleMIN_MATCHMinimum similarity required to declare two classes similar.
-
Constructor Summary
Constructors Constructor Description ClassFeatureSet()Constructor.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaddFeature(java.lang.String feature)java.util.Iterator<java.lang.String>featureIterator()java.lang.StringgetClassName()intgetNumFeatures()booleanhasFeature(java.lang.String feature)ClassFeatureSetinitialize(org.apache.bcel.classfile.JavaClass javaClass)Initialize from given JavaClass.booleanisInterface()static booleanisUnlikelyToBeRenamed(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.static voidmain(java.lang.String[] args)voidsetClassName(java.lang.String className)voidsetInterface(boolean isInterface)static doublesimilarity(ClassFeatureSet a, ClassFeatureSet b)booleansimilarTo(ClassFeatureSet other)static java.lang.StringtransformClassName(java.lang.String className)Transform a class name by stripping its package name.static java.lang.StringtransformMethodSignature(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.static java.lang.StringtransformSignature(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.voidwriteXML(XMLOutput xmlOutput)Write this object to given XMLOutput.
-
-
-
Field Detail
-
CLASS_NAME_KEY
public static final java.lang.String CLASS_NAME_KEY
- See Also:
- Constant Field Values
-
METHOD_NAME_KEY
public static final java.lang.String METHOD_NAME_KEY
- See Also:
- Constant Field Values
-
CODE_LENGTH_KEY
public static final java.lang.String CODE_LENGTH_KEY
- See Also:
- Constant Field Values
-
FIELD_NAME_KEY
public static final java.lang.String FIELD_NAME_KEY
- See Also:
- Constant Field Values
-
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
-
ELEMENT_NAME
public static final java.lang.String ELEMENT_NAME
- See Also:
- Constant Field Values
-
FEATURE_ELEMENT_NAME
public static final java.lang.String FEATURE_ELEMENT_NAME
- See Also:
- Constant Field Values
-
-
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
-
similarity
public static double similarity(ClassFeatureSet a, ClassFeatureSet b)
-
similarTo
public boolean similarTo(ClassFeatureSet other)
-
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:XMLWriteableWrite this object to given XMLOutput.- Specified by:
writeXMLin interfaceXMLWriteable- Parameters:
xmlOutput- the XMLOutput for the document- Throws:
java.io.IOException
-
-