ddepstographviz takes the dmd output of the -deps flag and produces a file that the graphviz package (use fdp) can turn into a pretty, colorful picture of your app's dependencies.
Pointing the mouse on the *
on the edges displays what symbols are imported.
package means that no selective imports where used.
-
Get dmd deps file -deps="deps.txt"
-
Run ddepstographviz on it
$ dub run ddepstographviz -- -i deps.txt -o deps.dot
- Run graphviz (fdp) on it
$ fdp deps.dot -T (svg,png,jpg) > deps.(svg,png,jpg)
We use the test of graphqld as an example.
- Displaying all the deps, is normally way to much to see anything.
- We can exclude package by use of the -e options
$ dub run ddepstographviz -- -i deps.txt -o deps.dot -e std,vibe,mir,nullablestore,core,object,diet,taggedalgebraic,taggedunion,eventcore,fixedsizearray
- The graph is still to messy.
So we remove edges between module in the same package, and dependencies that point down in the module tree.
$ dub run ddepstographviz -- -i deps.txt -o deps.dot -e std,vibe,mir,nullablestore,core,object,diet,taggedalgebraic,taggedunion,eventcore,fixedsizearray -t true -d true