Class Node

    • Field Detail

      • TO_STRING_STYLE

        public static final org.apache.commons.lang3.builder.ToStringStyle TO_STRING_STYLE
      • log

        protected static final org.slf4j.Logger log
      • name

        protected @NonNull java.lang.String name
        A human readable name.
      • code

        protected @Nullable java.lang.String code
        Original code snippet of this node. Most nodes will have a corresponding "code", but in cases where nodes are created artificially, it may be null.
      • comment

        protected @Nullable java.lang.String comment
        Optional comment of this node.
      • location

        protected @Nullable PhysicalLocation location
        Location of the finding in source code.
      • file

        protected @Nullable java.lang.String file
        Name of the containing file. It can be null for artificially created nodes or if just analyzing snippets of code without an associated file name.
      • prevEOG

        protected @NonNull java.util.List<PropertyEdge<Node>> prevEOG
        Incoming control flow edges.
      • nextEOG

        protected @NonNull java.util.List<PropertyEdge<Node>> nextEOG
        outgoing control flow edges.
      • nextCFG

        @Deprecated(since="3.4",
                    forRemoval=true)
        protected @NonNull java.util.List<PropertyEdge<Node>> nextCFG
        Deprecated, for removal: This API element is subject to removal in a future version.
        This Edge-Type is deprecated as it is less precise then the nextEOG
        outgoing control flow edges.
      • prevDFG

        protected @NonNull java.util.Set<Node> prevDFG
      • nextDFG

        protected @NonNull java.util.Set<Node> nextDFG
      • dummy

        protected boolean dummy
        If a node is marked as being a dummy, it means that it was created artificially and does not necessarily have a real counterpart in the actual source code
      • implicit

        protected boolean implicit
        Specifies, whether this node is implicit, i.e. is not really existing in source code but only exists implicitly. This mostly relates to implicit casts, return statements or implicit this expressions.
      • annotations

        protected java.util.List<Annotation> annotations
        List of annotations associated with that node.
    • Constructor Detail

      • Node

        public Node()
    • Method Detail

      • getId

        public java.lang.Long getId()
      • getName

        public @NonNull java.lang.String getName()
      • setName

        public void setName​(@NonNull java.lang.String name)
      • getFile

        public @Nullable java.lang.String getFile()
      • setFile

        public void setFile​(@Nullable java.lang.String file)
      • getCode

        public @Nullable java.lang.String getCode()
      • setCode

        public void setCode​(@Nullable java.lang.String code)
      • setLocation

        public void setLocation​(@Nullable PhysicalLocation location)
      • getPrevEOGProperties

        public @NonNull java.util.List<PropertyEdge<Node>> getPrevEOGProperties()
      • getNextEOGProperties

        public @NonNull java.util.List<PropertyEdge<Node>> getNextEOGProperties()
      • setPrevEOGProperties

        public void setPrevEOGProperties​(@NonNull java.util.List<PropertyEdge<Node>> prevEOG)
      • removePrevEOGEntry

        public void removePrevEOGEntry​(@NonNull Node eog)
      • removePrevEOGEntries

        public void removePrevEOGEntries​(@NonNull java.util.List<Node> prevEOGs)
      • getPrevEOG

        public @NonNull java.util.List<Node> getPrevEOG()
      • setPrevEOG

        public void setPrevEOG​(@NonNull java.util.List<Node> prevEOG)
      • addPrevEOG

        public void addPrevEOG​(@NonNull PropertyEdge<Node> propertyEdge)
      • getNextEOGPropertyEdge

        public @NonNull java.util.List<PropertyEdge<Node>> getNextEOGPropertyEdge()
      • getNextEOG

        public @NonNull java.util.List<Node> getNextEOG()
      • setNextEOG

        public void setNextEOG​(@NonNull java.util.List<Node> nextEOG)
      • addNextEOG

        public void addNextEOG​(@NonNull PropertyEdge<Node> propertyEdge)
      • clearNextEOG

        public void clearNextEOG()
      • getNextCFG

        @Deprecated(since="3.4",
                    forRemoval=true)
        public @NonNull java.util.List<Node> getNextCFG()
        Deprecated, for removal: This API element is subject to removal in a future version.
        This Edge-Type is deprecated as it is less precise then the nextEOGn
      • addNextCFG

        @Deprecated(since="3.4",
                    forRemoval=true)
        public void addNextCFG​(Node node)
        Deprecated, for removal: This API element is subject to removal in a future version.
        This Edge-Type is deprecated as it is less precise then the nextEOG
      • addNextCFG

        @Deprecated(since="3.4",
                    forRemoval=true)
        public void addNextCFG​(java.util.Collection<? extends Node> collection)
        Deprecated, for removal: This API element is subject to removal in a future version.
        This Edge-Type is deprecated as it is less precise then the nextEOG
        outgoing control flow edges.
      • getNextDFG

        public @NonNull java.util.Set<Node> getNextDFG()
      • setNextDFG

        public void setNextDFG​(@NonNull java.util.Set<Node> nextDFG)
      • addNextDFG

        public void addNextDFG​(Node next)
      • removeNextDFG

        public void removeNextDFG​(Node next)
      • getPrevDFG

        public @NonNull java.util.Set<Node> getPrevDFG()
      • setPrevDFG

        public void setPrevDFG​(@NonNull java.util.Set<Node> prevDFG)
      • addPrevDFG

        public void addPrevDFG​(Node prev)
      • removePrevDFG

        public void removePrevDFG​(Node prev)
      • setTypedefs

        public void setTypedefs​(@NonNull java.util.Set<TypedefDeclaration> typedefs)
      • getArgumentIndex

        public int getArgumentIndex()
      • setArgumentIndex

        public void setArgumentIndex​(int argumentIndex)
      • isDummy

        @Deprecated(forRemoval=true)
        public boolean isDummy()
        Deprecated, for removal: This API element is subject to removal in a future version.
        You should rather use isImplicit()
      • setDummy

        @Deprecated(forRemoval=true)
        public void setDummy​(boolean dummy)
        Deprecated, for removal: This API element is subject to removal in a future version.
        You should rather use setImplicit(boolean), if it is an implicit expression
      • setImplicit

        public void setImplicit​(boolean implicit)
      • isImplicit

        public boolean isImplicit()
      • getAnnotations

        public @NonNull java.util.List<Annotation> getAnnotations()
      • addAnnotations

        public void addAnnotations​(@NonNull java.util.Collection<Annotation> annotations)
      • disconnectFromGraph

        public void disconnectFromGraph()
        If a node should be removed from the graph, just removing it from the AST is not enough (see issue #60). It will most probably be referenced somewhere via DFG or EOG edges. Thus, if it needs to be disconnected completely, we will have to take care of correctly disconnecting these implicit edges.

        ATTENTION! Please note that this might kill an entire subgraph, if the node to disconnect has further children that have no alternative connection paths to the rest of the graph.

      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object
      • setComment

        public void setComment​(@NonNull java.lang.String comment)
      • 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