|
FindBugs™ 1.3.9 | |||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectedu.umd.cs.findbugs.ba.ch.Subtypes2
@ParametersAreNonnullByDefault public class Subtypes2
Class for performing class hierarchy queries. Does not require JavaClass objects to be in memory. Instead, uses XClass objects.
Field Summary | |
---|---|
static boolean |
DEBUG
|
static boolean |
DEBUG_QUERIES
|
static boolean |
ENABLE_SUBTYPES2
|
static boolean |
ENABLE_SUBTYPES2_FOR_COMMON_SUPERCLASS_QUERIES
|
Constructor Summary | |
---|---|
Subtypes2()
Constructor. |
Method Summary | |
---|---|
void |
addApplicationClass(XClass appXClass)
Add an application class, and its transitive supertypes, to the inheritance graph. |
void |
addClass(XClass xclass)
Add a class or interface, and its transitive supertypes, to the inheritance graph. |
java.util.Set<ClassDescriptor> |
getDirectSubtypes(ClassDescriptor classDescriptor)
Get known subtypes of given class. |
org.apache.bcel.generic.ObjectType |
getFirstCommonSuperclass(org.apache.bcel.generic.ObjectType a,
org.apache.bcel.generic.ObjectType b)
Get the first common superclass of the given object types. |
org.apache.bcel.generic.ReferenceType |
getFirstCommonSuperclass(org.apache.bcel.generic.ReferenceType a,
org.apache.bcel.generic.ReferenceType b)
Get the first common superclass of the given reference types. |
InheritanceGraph |
getGraph()
|
java.util.Set<ClassDescriptor> |
getSubtypes(ClassDescriptor classDescriptor)
Get known subtypes of given class. |
edu.umd.cs.findbugs.ba.ch.Subtypes2.SupertypeQueryResults |
getSupertypeQueryResults(ClassDescriptor classDescriptor)
Look up or compute the SupertypeQueryResults for class named by given ClassDescriptor. |
java.util.Set<ClassDescriptor> |
getTransitiveCommonSubtypes(ClassDescriptor classDescriptor1,
ClassDescriptor classDescriptor2)
Get the set of common subtypes of the two given classes. |
java.util.Collection<XClass> |
getXClassCollection()
Get Collection of all XClass objects (resolved classes) seen so far. |
boolean |
hasSubtypes(ClassDescriptor classDescriptor)
Determine whether or not the given class has any known subtypes. |
static boolean |
instanceOf(ClassDescriptor subDescriptor,
java.lang.String dottedSupertype)
|
static boolean |
instanceOf(org.apache.bcel.classfile.JavaClass subtype,
java.lang.String dottedSupertype)
|
static boolean |
instanceOf(java.lang.String dottedSubtype,
java.lang.String dottedSupertype)
|
boolean |
isApplicationClass(ClassDescriptor descriptor)
|
boolean |
isSubtype(ClassDescriptor subDesc,
ClassDescriptor superDesc)
|
boolean |
isSubtype(org.apache.bcel.generic.ObjectType type,
org.apache.bcel.generic.ObjectType possibleSupertype)
Determine whether or not a given ObjectType is a subtype of another. |
boolean |
isSubtype(org.apache.bcel.generic.ReferenceType type,
org.apache.bcel.generic.ReferenceType possibleSupertype)
Determine whether or not a given ReferenceType is a subtype of another. |
void |
traverseSupertypes(ClassDescriptor start,
InheritanceGraphVisitor visitor)
Starting at the class or interface named by the given ClassDescriptor, traverse the inheritance graph, exploring all paths from the class or interface to java.lang.Object. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
public static final boolean ENABLE_SUBTYPES2
public static final boolean ENABLE_SUBTYPES2_FOR_COMMON_SUPERCLASS_QUERIES
public static final boolean DEBUG
public static final boolean DEBUG_QUERIES
Constructor Detail |
---|
public Subtypes2()
Method Detail |
---|
public InheritanceGraph getGraph()
public static boolean instanceOf(@DottedClassName java.lang.String dottedSubtype, @DottedClassName java.lang.String dottedSupertype)
public static boolean instanceOf(ClassDescriptor subDescriptor, @DottedClassName java.lang.String dottedSupertype)
public static boolean instanceOf(org.apache.bcel.classfile.JavaClass subtype, @DottedClassName java.lang.String dottedSupertype)
public void addApplicationClass(XClass appXClass)
appXClass
- application XClass to add to the inheritance graphpublic boolean isApplicationClass(ClassDescriptor descriptor)
public void addClass(XClass xclass)
xclass
- XClass to add to the inheritance graphpublic boolean isSubtype(org.apache.bcel.generic.ReferenceType type, org.apache.bcel.generic.ReferenceType possibleSupertype) throws java.lang.ClassNotFoundException
type
- a ReferenceTypepossibleSupertype
- another Reference type
type
is a subtype of possibleSupertype
, false if not
java.lang.ClassNotFoundException
- if a missing class prevents a definitive answerpublic boolean isSubtype(ClassDescriptor subDesc, ClassDescriptor superDesc) throws java.lang.ClassNotFoundException
java.lang.ClassNotFoundException
public boolean isSubtype(org.apache.bcel.generic.ObjectType type, org.apache.bcel.generic.ObjectType possibleSupertype) throws java.lang.ClassNotFoundException
type
- a ReferenceTypepossibleSupertype
- another Reference type
type
is a subtype of possibleSupertype
, false if not
java.lang.ClassNotFoundException
- if a missing class prevents a definitive answerpublic org.apache.bcel.generic.ReferenceType getFirstCommonSuperclass(org.apache.bcel.generic.ReferenceType a, org.apache.bcel.generic.ReferenceType b) throws java.lang.ClassNotFoundException
a
and b
are the
same type. Otherwise, we try to return as accurate a type as possible.
This method is used as the meet operator in TypeDataflowAnalysis,
and is intended to follow (more or less) the JVM bytecode verifier
semantics.
This method should be used in preference to the getFirstCommonSuperclass()
method in ReferenceType
.
a
- a ReferenceTypeb
- another ReferenceType
a
and b
java.lang.ClassNotFoundException
public org.apache.bcel.generic.ObjectType getFirstCommonSuperclass(org.apache.bcel.generic.ObjectType a, org.apache.bcel.generic.ObjectType b) throws java.lang.ClassNotFoundException
a
and b
are the
same type. Otherwise, we try to return as accurate a type as possible.
This method is used as the meet operator in TypeDataflowAnalysis,
and is intended to follow (more or less) the JVM bytecode verifier
semantics.
This method should be used in preference to the getFirstCommonSuperclass()
method in ReferenceType
.
a
- an ObjectTypeb
- another ObjectType
a
and b
java.lang.ClassNotFoundException
public java.util.Set<ClassDescriptor> getSubtypes(ClassDescriptor classDescriptor) throws java.lang.ClassNotFoundException
classDescriptor
- ClassDescriptor naming a class
java.lang.ClassNotFoundException
public boolean hasSubtypes(ClassDescriptor classDescriptor) throws java.lang.ClassNotFoundException
classDescriptor
- ClassDescriptor naming a class
java.lang.ClassNotFoundException
public java.util.Set<ClassDescriptor> getDirectSubtypes(ClassDescriptor classDescriptor) throws java.lang.ClassNotFoundException
classDescriptor
- ClassDescriptor naming a class
java.lang.ClassNotFoundException
public java.util.Set<ClassDescriptor> getTransitiveCommonSubtypes(ClassDescriptor classDescriptor1, ClassDescriptor classDescriptor2) throws java.lang.ClassNotFoundException
classDescriptor1
- a ClassDescriptor naming a classclassDescriptor2
- a ClassDescriptor naming another class
java.lang.ClassNotFoundException
public java.util.Collection<XClass> getXClassCollection()
public void traverseSupertypes(ClassDescriptor start, InheritanceGraphVisitor visitor) throws java.lang.ClassNotFoundException
start
- ClassDescriptor naming the class where the traversal should startvisitor
- an InheritanceGraphVisitor
java.lang.ClassNotFoundException
- if the start vertex cannot be resolvedpublic edu.umd.cs.findbugs.ba.ch.Subtypes2.SupertypeQueryResults getSupertypeQueryResults(ClassDescriptor classDescriptor)
classDescriptor
- a ClassDescriptor
java.lang.ClassNotFoundException
|
FindBugs™ 1.3.9 | |||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |