#graph #module #architecture #dependencies #command-line-tool

bin+lib cargo-graphmod

A cli utility to graph the dependencies between the modules of a package in the dot/graphviz format

3 stable releases

1.1.0 Dec 23, 2023
1.0.6 Sep 5, 2023
1.0.4 Jul 8, 2023

#60 in Visualization

30 downloads per month

GPL-3.0-only

45KB
1K SLoC

Cargo Graphmod

A cargo subcommand for building Graphviz DOT files of dependency graphs between the modules of a package.

Prerequisites

Installing

cargo-graphmod can be installed with cargo install:

cargo install cargo-graphmod

Usage

cd my_rust_package
cargo graphmod | tred | dot -Tsvg > modules.svg
  • Assumptions:
    • You should run the command from the root of your project (just above src).
    • By default, the package name (as defined in Cargo.toml) is supposed to be the directory name. Otherwise pass it as argument: cargo graphmod a_different_name.
  • Use tred if you want the transitive reduction of the graph.
  • You can export to a lot of different formats.

Known limitations

  • Detects only dependencies introduced by the use keyword.
  • Detects only dependencies before the first #[cfg(test)] (in order to eliminate the dependencies from unit tests).
  • Works best when there is a bijection between modules and files / directories.

License

cargo-graphmod is released under the terms of the GPLv3 license.

Cargo Graphmod's graph

cargo-graphmod

Other example

web_app

Dependencies

~2.2–3MB
~54K SLoC