Node
Imagine the pupil's compiled answer drawn as a map of dots joined by arrows. Compiled, not written: the map holds things the compiler produced that the pupil never typed.
A node is one dot. Depending on how closely you look, a dot might be a whole class or a single method. Everything the reach check does is answering questions about which dots exist and which arrows lead where.
What it is
A node is one element of the analysed program. Which elements count as nodes depends on the engine: ArchUnit reasons mostly about classes and their members, while T. J. Watson Libraries for Analysis (WALA) reasons about individual methods, because a call graph joins methods rather than classes.
Nodes come from compiled bytecode, not from source. That matters twice over: the analysis sees what the compiler produced, including synthetic and bridge methods the author never wrote, and it can analyse a dependency for which no source is available.
In Ares 2
Nodes are classified before they are judged. A node belonging to student code is subject
to the policy; a node belonging to Ares itself, to the test harness, or to a class named
in theFollowingClassesAreTestClasses is trusted. That classification is the whole reason
the trust boundary can be drawn at all, and it is why student code must never land in a
reserved package: a node in a reserved package would be classified as trusted.
Further reading
- Introduction to Graph Theory — Baeldung on Computer Science
- Graphs in Java — Baeldung
- The Java Language Specification, Java SE 21 — Oracle