public class Hierarchy extends Object
| Modifier and Type | Field and Description |
|---|---|
protected Map<SootClass,List<SootClass>> |
classToDirSubclasses |
protected Map<SootClass,List<SootClass>> |
classToSubclasses |
protected Map<SootClass,List<SootClass>> |
interfaceToDirImplementers |
protected Map<SootClass,List<SootClass>> |
interfaceToDirSubinterfaces |
protected Map<SootClass,List<SootClass>> |
interfaceToDirSuperinterfaces |
protected Map<SootClass,List<SootClass>> |
interfaceToSubinterfaces |
protected Map<SootClass,List<SootClass>> |
interfaceToSuperinterfaces |
| Constructor and Description |
|---|
Hierarchy()
Constructs a hierarchy from the current scene.
|
| Modifier and Type | Method and Description |
|---|---|
protected void |
checkState() |
List<SootClass> |
getDirectImplementersOf(SootClass i)
Returns a list of direct implementers of c, excluding itself.
|
List<SootClass> |
getDirectSubclassesOf(SootClass c)
Returns a list of direct subclasses of c, excluding c.
|
List<SootClass> |
getDirectSubclassesOfIncluding(SootClass c)
Returns a list of direct subclasses of c, including c.
|
List<SootClass> |
getDirectSubinterfacesOf(SootClass c)
Returns a list of direct subinterfaces of c.
|
List<SootClass> |
getDirectSubinterfacesOfIncluding(SootClass c)
Returns a list of direct subinterfaces of c, including itself.
|
List<SootClass> |
getDirectSuperclassesOf(SootClass c)
Returns a list of direct superclasses of c, excluding c.
|
List<SootClass> |
getDirectSuperinterfacesOf(SootClass c)
Returns a list of direct superinterfaces of c.
|
List<SootClass> |
getImplementersOf(SootClass i)
Returns a list of implementers of c, excluding itself.
|
SootClass |
getLeastCommonSuperclassOf(SootClass c1,
SootClass c2)
Returns the most specific type which is an ancestor of both c1 and c2.
|
List<SootClass> |
getSubclassesOf(SootClass c)
Returns a list of subclasses of c, excluding itself.
|
List<SootClass> |
getSubclassesOfIncluding(SootClass c)
Returns a list of subclasses of c, including itself.
|
List<SootClass> |
getSubinterfacesOf(SootClass sootClass)
Returns a list of subinterfaces of sootClass, excluding itself.
|
List<SootClass> |
getSubinterfacesOfIncluding(SootClass sootClass)
Returns a list of subinterfaces of sootClass, including itself.
|
List<SootClass> |
getSuperclassesOf(SootClass sootClass)
Returns a list of direct superclasses of passed class in reverse order, starting with its parent.
|
List<SootClass> |
getSuperclassesOfIncluding(SootClass sootClass)
Returns a list of superclasses of
sootClass, including itself. |
List<SootClass> |
getSuperinterfacesOf(SootClass c)
Returns a list of superinterfaces of c, excluding itself.
|
List<SootClass> |
getSuperinterfacesOfIncluding(SootClass c)
Returns a list of superinterfaces of c, including itself.
|
protected void |
initializeHierarchy(Chain<SootClass> allClasses)
Initializes the hierarchy given a chain of all classes that shall be included in the hierarchy
|
boolean |
isClassDirectSubclassOf(SootClass c,
SootClass c2)
Returns true if child is a direct subclass of possibleParent.
|
boolean |
isClassSubclassOf(SootClass child,
SootClass possibleParent)
Returns true if child is a subclass of possibleParent.
|
boolean |
isClassSubclassOfIncluding(SootClass child,
SootClass possibleParent)
Returns true if child is, or is a subclass of, possibleParent.
|
boolean |
isClassSuperclassOf(SootClass parent,
SootClass possibleChild)
Returns true if child is a superclass of possibleParent.
|
boolean |
isClassSuperclassOfIncluding(SootClass parent,
SootClass possibleChild)
Returns true if parent is, or is a superclass of, possibleChild.
|
boolean |
isInterfaceDirectSubinterfaceOf(SootClass child,
SootClass possibleParent)
Returns true if child is a direct subinterface of possibleParent.
|
boolean |
isInterfaceDirectSuperinterfaceOf(SootClass parent,
SootClass possibleChild)
Returns true if parent is a direct superinterface of possibleChild.
|
boolean |
isInterfaceSubinterfaceOf(SootClass child,
SootClass possibleParent)
Returns true if child is a subinterface of possibleParent.
|
boolean |
isInterfaceSuperinterfaceOf(SootClass parent,
SootClass possibleChild)
Returns true if parent is a superinterface of possibleChild.
|
boolean |
isVisible(SootClass from,
ClassMember m)
Returns true if the classmember m is visible from code in the class from.
|
boolean |
isVisible(SootClass from,
SootClass check)
Checks whether check is a visible class in view of the from class.
|
List<SootMethod> |
resolveAbstractDispatch(List<SootClass> classes,
SootMethod m)
Returns a list of possible targets for the given method and set of receiver types.
|
List<SootMethod> |
resolveAbstractDispatch(SootClass c,
SootMethod m)
Given an abstract dispatch to an object of type c and a method m, gives a list of possible receiver methods.
|
List<SootMethod> |
resolveConcreteDispatch(List<Type> classes,
SootMethod m)
Given a set of definite receiver types, returns a list of possible targets.
|
SootMethod |
resolveConcreteDispatch(SootClass concreteType,
SootMethod m)
Given an object of actual type C (o = new C()), returns the method which will be called on an o.f() invocation.
|
SootMethod |
resolveSpecialDispatch(SpecialInvokeExpr ie,
SootMethod container)
Returns the target for the given SpecialInvokeExpr.
|
protected Map<SootClass,List<SootClass>> interfaceToDirSuperinterfaces
protected void initializeHierarchy(Chain<SootClass> allClasses)
allClasses - The chain of all classes to be included in the hierarchyprotected void checkState()
public List<SootClass> getSubclassesOfIncluding(SootClass c)
public List<SootClass> getSubclassesOf(SootClass c)
public List<SootClass> getSuperclassesOfIncluding(SootClass sootClass)
sootClass, including itself.sootClass - the class of which superclasses will be taken. Must not be null or interfaceIllegalArgumentException - when passed class is an interfaceNullPointerException - when passed argument is nullpublic List<SootClass> getSuperclassesOf(SootClass sootClass)
sootClass - the class of which superclasses will be taken. Must not be null or interfaceIllegalArgumentException - when passed class is an interfaceNullPointerException - when passed argument is nullpublic List<SootClass> getSubinterfacesOfIncluding(SootClass sootClass)
sootClass - the interface of which subinterfaces will be taken. Must not be null or classIllegalArgumentException - when passed class is a classNullPointerException - when passed argument is nullpublic List<SootClass> getSubinterfacesOf(SootClass sootClass)
sootClass - the interface of which subinterfaces will be taken. Must not be null or classIllegalArgumentException - when passed sootClass is a classNullPointerException - when passed argument is nullpublic List<SootClass> getSuperinterfacesOfIncluding(SootClass c)
public List<SootClass> getSuperinterfacesOf(SootClass c)
public List<SootClass> getDirectSuperclassesOf(SootClass c)
public List<SootClass> getDirectSubclassesOf(SootClass c)
public List<SootClass> getDirectSubclassesOfIncluding(SootClass c)
public List<SootClass> getDirectSuperinterfacesOf(SootClass c)
public List<SootClass> getDirectSubinterfacesOf(SootClass c)
public List<SootClass> getDirectSubinterfacesOfIncluding(SootClass c)
public List<SootClass> getDirectImplementersOf(SootClass i)
public List<SootClass> getImplementersOf(SootClass i)
public boolean isClassSubclassOf(SootClass child, SootClass possibleParent)
public boolean isClassSubclassOfIncluding(SootClass child, SootClass possibleParent)
public boolean isClassDirectSubclassOf(SootClass c, SootClass c2)
public boolean isClassSuperclassOf(SootClass parent, SootClass possibleChild)
public boolean isClassSuperclassOfIncluding(SootClass parent, SootClass possibleChild)
public boolean isInterfaceSubinterfaceOf(SootClass child, SootClass possibleParent)
public boolean isInterfaceDirectSubinterfaceOf(SootClass child, SootClass possibleParent)
public boolean isInterfaceSuperinterfaceOf(SootClass parent, SootClass possibleChild)
public boolean isInterfaceDirectSuperinterfaceOf(SootClass parent, SootClass possibleChild)
public SootClass getLeastCommonSuperclassOf(SootClass c1, SootClass c2)
public boolean isVisible(SootClass from, SootClass check)
public boolean isVisible(SootClass from, ClassMember m)
public SootMethod resolveConcreteDispatch(SootClass concreteType, SootMethod m)
public List<SootMethod> resolveConcreteDispatch(List<Type> classes, SootMethod m)
public List<SootMethod> resolveAbstractDispatch(SootClass c, SootMethod m)
public List<SootMethod> resolveAbstractDispatch(List<SootClass> classes, SootMethod m)
public SootMethod resolveSpecialDispatch(SpecialInvokeExpr ie, SootMethod container)
Copyright © 2020 Soot OSS. All rights reserved.