Class Node


  • public class Node
    extends java.lang.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 Detail

      • predecessors

        public final java.util.Set<Node> predecessors
      • incomingCallLocations

        public final java.util.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 java.util.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 java.util.Set<Node> successors
      • isTruncated

        public boolean isTruncated
    • Method Detail

      • 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 java.util.Set<Node> getAllPredecessors()
        Get all predecessors of this node.
      • getFurthestPredecessors

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

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

        public boolean equals​(java.lang.Object o)
        Overrides:
        equals in class java.lang.Object
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class java.lang.Object