public class OnFlyCallGraphBuilder.TraceBasedReflectionModel extends java.lang.Object implements ReflectionModel
Modifier and Type | Field and Description |
---|---|
protected java.util.Set<soot.jimple.toolkits.callgraph.OnFlyCallGraphBuilder.TraceBasedReflectionModel.Guard> |
guards |
protected ReflectionTraceInfo |
reflectionInfo |
Modifier and Type | Method and Description |
---|---|
void |
classForName(SootMethod container,
Stmt forNameInvokeStmt)
Adds an edge to all class initializers of all possible receivers of
Class.forName() calls within source.
|
void |
classNewInstance(SootMethod container,
Stmt newInstanceInvokeStmt)
Adds an edge to the constructor of the target class from this call to
Class.newInstance() . |
void |
contructorNewInstance(SootMethod container,
Stmt newInstanceInvokeStmt)
Adds a special edge of kind
Kind.REFL_CONSTR_NEWINSTANCE to all
possible target constructors of this call to
Constructor.newInstance(Object...) . |
void |
methodInvoke(SootMethod container,
Stmt invokeStmt)
Adds a special edge of kind
Kind.REFL_INVOKE to all possible target
methods of this call to Method.invoke(Object, Object...) . |
protected java.util.Set<soot.jimple.toolkits.callgraph.OnFlyCallGraphBuilder.TraceBasedReflectionModel.Guard> guards
protected ReflectionTraceInfo reflectionInfo
public void classForName(SootMethod container, Stmt forNameInvokeStmt)
classForName
in interface ReflectionModel
public void classNewInstance(SootMethod container, Stmt newInstanceInvokeStmt)
Class.newInstance()
.classNewInstance
in interface ReflectionModel
public void contructorNewInstance(SootMethod container, Stmt newInstanceInvokeStmt)
Kind.REFL_CONSTR_NEWINSTANCE
to all
possible target constructors of this call to
Constructor.newInstance(Object...)
. Those kinds of edges are treated
specially in terms of how parameters are assigned, as parameters to the
reflective call are passed into the argument array of
Constructor.newInstance(Object...)
.contructorNewInstance
in interface ReflectionModel
PAG.addCallTarget(Edge)
public void methodInvoke(SootMethod container, Stmt invokeStmt)
Kind.REFL_INVOKE
to all possible target
methods of this call to Method.invoke(Object, Object...)
. Those kinds
of edges are treated specially in terms of how parameters are assigned, as
parameters to the reflective call are passed into the argument array of
Method.invoke(Object, Object...)
.methodInvoke
in interface ReflectionModel
PAG.addCallTarget(Edge)