graph - Visualize Dependencies

The graph verb generates a visual representation of the package dependency graph. It is provided by the colcon-package-information package.

For each package, the path, name and type is shown. By default it outputs a topologically ordered list of packages using ASCII art to indicate direct as well as transitive dependencies.

Optionally the verb can generate DOT code to render a graphical representation.

Command line arguments

These common arguments can be used:

Additionally, the following specific command line arguments can be used:

--density
Output the density of the dependency graph. This option is only supported without --dot.
--legend
Output a legend for the dependency graph.
--dot

Output topological graph in DOT. Commonly the output should be piped to dot, e.g. | dot -Tpng -o graph.png.

The differently colored edges represent the dependency types: blue=build, red=run, tan=test. Dashed edges are indirect dependencies which only appear if some packages are being skipped.

--dot-cluster
Cluster packages by their file system path. This option only affects --dot.
--dot-include-skipped
Include skipped packages in the rendered graph with a gray color. This option only affects --dot.

Example Output

ASCII

Example output of invoking colcon graph with --legend (which adds the first paragraph describing the symbols).

+ marks when the package in this row can be processed
* marks a direct dependency from the package indicated
  by the + in the same column to the package in this row
. marks a transitive dependency

pkg1  + **.
pkg2   + *
pkg3    + *
pkg4     +
pkg5      +

DOT

Example output of invoking colcon graph with --dot rendered into an image. In this example the packages have the same build (blue edges) and run (red edges) dependencies.

digraph list {
"pkg5";
"pkg4";
"pkg3";
"pkg2";
"pkg1";
"pkg5" -> "pkg3" [color="#0000ff:#ff0000"];
"pkg4" -> "pkg2" [color="#0000ff:#ff0000"];
"pkg4" -> "pkg1" [color="#0000ff:#ff0000"];
"pkg3" -> "pkg1" [color="#0000ff:#ff0000"];
}