java.lang.Object
proguard.analysis.datastructure.callgraph.Node

public class Node extends Object
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 Details

    • signature

      public final MethodSignature signature
    • predecessors

      public final Set<Node> predecessors
    • incomingCallLocations

      public final Set<CodeLocation> incomingCallLocations
      The CodeLocations 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

      public final Set<CodeLocation> outgoingCallLocations
      The CodeLocations 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

      public final Set<Node> successors
    • isTruncated

      public boolean isTruncated
  • Constructor Details

  • Method Details

    • successorsContain

      public boolean successorsContain(MethodSignature signature)
      Checks if this node or any successors corresponds to a specific MethodSignature.
      Parameters:
      signature - The MethodSignature to look for
      Returns:
      true if this node or any of its transitive successors represents the target location
    • predecessorsContain

      public boolean predecessorsContain(MethodSignature signature)
      Checks if this node or any predecessors corresponds to a specific MethodSignature.
      Parameters:
      signature - The MethodSignature to 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

      public Set<Node> getAllPredecessors()
      Get all predecessors of this node.
    • getFurthestPredecessors

      public Set<Node> getFurthestPredecessors()
      Get the predecessor leaf nodes in the call sub-graph represented by this node.
    • getFurthestSuccessors

      public Set<Node> getFurthestSuccessors()
      Get the successor leaf nodes in the call sub-graph represented by this node.
    • equals

      public boolean equals(Object o)
      Overrides:
      equals in class Object
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object