Package edu.umd.cs.findbugs.util
Class ClassName
- java.lang.Object
-
- edu.umd.cs.findbugs.util.ClassName
-
public abstract class ClassName extends java.lang.ObjectUtility methods for working with class names.
-
-
Constructor Summary
Constructors Constructor Description ClassName()
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static voidassertIsDotted(java.lang.String className)static voidassertIsSlashed(java.lang.String className)static java.lang.StringextractClassName(java.lang.String originalName)Extract a slashed classname from a JVM classname or signature.static java.lang.StringextractPackageName(java.lang.String className)extract the package name from a dotted class name.static java.lang.StringextractPackagePrefix(java.lang.String packageName, int count)static java.lang.StringextractSimpleName(java.lang.String className)static java.lang.StringfromFieldSignature(java.lang.String signature)Converts from signature to slashed class name (e.g., from Ljava/lang/String; to java/lang/String).static java.lang.StringfromFieldSignatureToDottedClassName(java.lang.String signature)Converts from signature to dotted class name (e.g., from Ljava/lang/String; to java.lang.String).private static booleanfuzzyMatch(java.lang.String className, java.lang.String searchString)Perform a fuzzy matching, by comparing the Levenshtein distance of the simple class name and the search string.static java.lang.StringgetPrimitiveType(java.lang.String cls)static booleanisAnonymous(java.lang.String className)Does a class name appear to designate an anonymous class? Only the name is analyzed.static booleanisLocalOrAnonymous(java.lang.String className)Does a class name appear to designate an anonymous or local (defined inside method) class? Only the name is analyzed.static booleanisMathClass(java.lang.String className)private static booleanisValidArrayFieldDescriptor(java.lang.String className)Determines whether a class name is a valid array field descriptor as per JVMS (Java SE 8 Edition) 4.3.2static booleanisValidBaseTypeFieldDescriptor(java.lang.String className)Determines whether a class name is a valid array field descriptor as per JVMS (Java SE 8 Edition) 4.3.2private static booleanisValidBinaryClassName(java.lang.String className)private static booleanisValidClassFieldDescriptor(java.lang.String className)static booleanisValidClassName(java.lang.String className)Return whether or not the given class name is valid.private static booleanisValidDottedClassName(java.lang.String className)static booleanmatchedPrefixes(java.lang.String[] classSearchStrings, java.lang.String className)static java.lang.StringtoDottedClassName(java.lang.String className)Convert class name to dotted format.static java.lang.StringtoSignature(java.lang.String className)static java.lang.StringtoSlashedClassName(java.lang.Class<?> class1)static java.lang.StringtoSlashedClassName(java.lang.String className)Convert class name to slashed format.
-
-
-
Method Detail
-
isMathClass
public static boolean isMathClass(@SlashedClassName java.lang.String className)
-
assertIsDotted
public static void assertIsDotted(@DottedClassName java.lang.String className)
-
assertIsSlashed
public static void assertIsSlashed(@SlashedClassName java.lang.String className)
-
toSignature
public static java.lang.String toSignature(@SlashedClassName java.lang.String className)
-
getPrimitiveType
@CheckForNull public static java.lang.String getPrimitiveType(@SlashedClassName java.lang.String cls)
-
fromFieldSignature
@CheckForNull @SlashedClassName public static java.lang.String fromFieldSignature(java.lang.String signature)
Converts from signature to slashed class name (e.g., from Ljava/lang/String; to java/lang/String). Returns null if it is the signature for an array or primitive type.
-
toSlashedClassName
@SlashedClassName public static java.lang.String toSlashedClassName(@SlashedClassName(when=UNKNOWN) java.lang.String className)
Convert class name to slashed format. If the class name is already in slashed format, it is returned unmodified.- Parameters:
className- a class name- Returns:
- the same class name in slashed format
-
toDottedClassName
@DottedClassName public static java.lang.String toDottedClassName(@SlashedClassName(when=UNKNOWN) java.lang.String className)
Convert class name to dotted format. If the class name is already in dotted format, it is returned unmodified.- Parameters:
className- a class name- Returns:
- the same class name in dotted format
-
fromFieldSignatureToDottedClassName
@DottedClassName @CheckForNull public static java.lang.String fromFieldSignatureToDottedClassName(java.lang.String signature)
Converts from signature to dotted class name (e.g., from Ljava/lang/String; to java.lang.String). Returns null if it is the signature for an array or primitive type.- Parameters:
signature- a class signature- Returns:
- the class of the signature in dotted format
-
extractPackageName
@DottedClassName public static java.lang.String extractPackageName(@DottedClassName java.lang.String className)
extract the package name from a dotted class name. Package names are always in dotted format.- Parameters:
className- a dotted class name- Returns:
- the name of the package containing the class
-
extractSimpleName
public static java.lang.String extractSimpleName(@DottedClassName java.lang.String className)
-
isValidClassName
public static boolean isValidClassName(java.lang.String className)
Return whether or not the given class name is valid.- Parameters:
className- a possible class name- Returns:
- true if it's a valid class name, false otherwise
-
isValidBinaryClassName
private static boolean isValidBinaryClassName(java.lang.String className)
-
isValidDottedClassName
private static boolean isValidDottedClassName(java.lang.String className)
-
isValidArrayFieldDescriptor
private static boolean isValidArrayFieldDescriptor(java.lang.String className)
Determines whether a class name is a valid array field descriptor as per JVMS (Java SE 8 Edition) 4.3.2- Parameters:
className- a class name to test for validity - must be non-nulland non-empty.- Returns:
trueifclassNameis a valid array field descriptor as per JVMS 4.3.2, otherwisefalse- Throws:
java.lang.IndexOutOfBoundsException- ifclassNameis empty.java.lang.NullPointerException- ifclassNameisnull.
-
isValidClassFieldDescriptor
private static boolean isValidClassFieldDescriptor(java.lang.String className)
-
isValidBaseTypeFieldDescriptor
public static boolean isValidBaseTypeFieldDescriptor(java.lang.String className)
Determines whether a class name is a valid array field descriptor as per JVMS (Java SE 8 Edition) 4.3.2- Parameters:
className- a class name to test for validity - must be non-nulland non-empty.- Returns:
trueifclassNameis a valid basetype field descriptor as per JVMS 4.3.2, otherwisefalse
-
isLocalOrAnonymous
public static boolean isLocalOrAnonymous(java.lang.String className)
Does a class name appear to designate an anonymous or local (defined inside method) class? Only the name is analyzed. No classes are loaded or looked up.- Parameters:
className- class name, slashed or dotted, fully qualified or unqualified- Returns:
- true if className is the name of an anonymous or local class
-
isAnonymous
public static boolean isAnonymous(java.lang.String className)
Does a class name appear to designate an anonymous class? Only the name is analyzed. No classes are loaded or looked up.- Parameters:
className- class name, slashed or dotted, fully qualified or unqualified- Returns:
- true if className is the name of an anonymous class
-
extractClassName
@SlashedClassName public static java.lang.String extractClassName(java.lang.String originalName)
Extract a slashed classname from a JVM classname or signature.- Parameters:
originalName- JVM classname or signature- Returns:
- a slashed classname
-
extractPackagePrefix
public static java.lang.String extractPackagePrefix(java.lang.String packageName, int count)
-
matchedPrefixes
public static boolean matchedPrefixes(java.lang.String[] classSearchStrings, @DottedClassName java.lang.String className)
-
fuzzyMatch
private static boolean fuzzyMatch(java.lang.String className, java.lang.String searchString)Perform a fuzzy matching, by comparing the Levenshtein distance of the simple class name and the search string. A maximum distance of 3 is used. This means the searchString and the className may differ by 3 single-character edits (insertions, deletions or substitutions). This limit also speeds up the computation.For more information on the Levenshtein distance see Wikipedia and the Apache Commons Text JavaDoc.
- Parameters:
className- the full class namesearchString- the search string- Returns:
- true, if the strings are similar, false otherwise
-
toSlashedClassName
@SlashedClassName public static java.lang.String toSlashedClassName(java.lang.Class<?> class1)
-
-