Withby is one of the interactive graphs Understand can draw of your code — call trees, dependencies, control flow, and more.
Withby
Languages: AdaTargets: Packages, Subprograms
Variants: Classic, Cluster, Compare, Relationship, Simplified
Show what withs a selected Ada package, subprogram, task, or protected object, directly or indirectly.
For a selected Ada unit, this shows an edge from each package that names it in a with clause — whether that clause is on the withing package’s spec or its body — then recurses into each of those packages’ own withers, building a multi-level tree.
Rooted at IO_Utils below, the graph shows it withed by Data_Reader and Data_Writer (from their specs) and by Processor and Monitor (from their bodies). Processor is itself withed by Pipeline and Monitor (from their specs) and by Application (from its body); Pipeline and Monitor are each withed by Application’s spec in turn. Application is withed by nothing, ending the chain. The inverse graph, With, shows the reverse relationship — everything the selected unit withs, directly or indirectly.
See the following code and corresponding graph
// application.ads
with Pipeline;
with Monitor;
// application.adb
with Processor;
// pipeline.ads
with Processor;
// monitor.ads
with Processor;
// monitor.adb
with IO_Utils;
// processor.ads
with Data_Reader;
with Data_Writer;
// processor.adb
with IO_Utils;
// data_reader.ads
with IO_Utils;
// data_writer.ads
with IO_Utils;
// io_utils.ads
Withby - Classic
The Classic variant is similar to the Simplified variant, showing all relationships in a simple tree, but it uses a custom layout algorithm instead of Graphviz.
Withby - Cluster
The Cluster variant groups entities by their containing class/file/architecture.
Withby - Compare
The Compare variant shows how the graph has changed relative to the project's comparison database.
Withby - Relationship
The Relationship variant filters the graph to only paths connecting the two entities.
Withby - Simplified
The Simplified variant shows all relationships in a simple tree (no clusters)