Class Node
java.lang.Object
proguard.analysis.datastructure.callgraph.Node
Represents a node in a sub-callgraph, e.g. only the incoming or the outgoing callgraph for a
specific method. See
CallGraph#reconstructCallGraph(ClassPool, MethodSignature) for more
details. The reconstruction process makes sure that there are no loops in the graph.-
Field Summary
FieldsModifier and TypeFieldDescriptionfinal Set<CodeLocation>TheCodeLocations containing the calls in this node's predecessors that lead here.booleanfinal Set<CodeLocation>TheCodeLocations containing the calls in this node that lead to its successors.final MethodSignature -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionbooleanGet all predecessors of this node.Get the predecessor leaf nodes in the call sub-graph represented by this node.Get the successor leaf nodes in the call sub-graph represented by this node.intCalculate the distance between this node and its furthest predecessor.intCalculate the distance between this node and its furthest successor.inthashCode()booleanpredecessorsContain(MethodSignature signature) Checks if this node or any predecessors corresponds to a specificMethodSignature.booleansuccessorsContain(MethodSignature signature) Checks if this node or any successors corresponds to a specificMethodSignature.
-
Field Details
-
signature
-
predecessors
-
incomingCallLocations
TheCodeLocations containing the calls in this node's predecessors that lead here. If the call graph is traversed strictly in successor direction, there is exactly one incoming call per node, except for the root, which has none. -
outgoingCallLocations
TheCodeLocations containing the calls in this node that lead to its successors. If the call graph is traversed strictly in predecessor direction, there is exactly one outgoing call per node, except for the root, which has none. -
successors
-
isTruncated
public boolean isTruncated
-
-
Constructor Details
-
Node
-
-
Method Details
-
successorsContain
Checks if this node or any successors corresponds to a specificMethodSignature.- Parameters:
signature- TheMethodSignatureto look for- Returns:
- true if this node or any of its transitive successors represents the target location
-
predecessorsContain
Checks if this node or any predecessors corresponds to a specificMethodSignature.- Parameters:
signature- TheMethodSignatureto look for- Returns:
- true if this node or any of its transitive predecessors represents the target location
-
getSuccessorDepth
public int getSuccessorDepth()Calculate the distance between this node and its furthest successor.- Returns:
- The distance (number of hops in the graph)
-
getPredecessorDepth
public int getPredecessorDepth()Calculate the distance between this node and its furthest predecessor.- Returns:
- The distance (number of hops in the graph)
-
getAllPredecessors
Get all predecessors of this node. -
getFurthestPredecessors
Get the predecessor leaf nodes in the call sub-graph represented by this node. -
getFurthestSuccessors
Get the successor leaf nodes in the call sub-graph represented by this node. -
equals
-
hashCode
public int hashCode()
-