All Projects → walmartlabs → Vizdeps

walmartlabs / Vizdeps

Licence: apache-2.0
Visualize Leiningen dependencies using Graphviz

Programming Languages

clojure
4091 projects

Projects that are alternatives of or similar to Vizdeps

Asciidoctor Kroki
Asciidoctor.js extension to convert diagrams to images using Kroki!
Stars: ✭ 55 (-58.02%)
Mutual labels:  graphviz
Grapherl
Create graphs of Erlang systems and programs
Stars: ✭ 78 (-40.46%)
Mutual labels:  graphviz
Lsofgraph Python
python version of lsof to graphviz parser
Stars: ✭ 106 (-19.08%)
Mutual labels:  graphviz
Dockviz
Visualizing Docker data
Stars: ✭ 1,104 (+742.75%)
Mutual labels:  graphviz
Markdeck
presentations as code - author cool slide decks, text-only, offline-ready, collaborative
Stars: ✭ 1,159 (+784.73%)
Mutual labels:  graphviz
Graphviz
Stars: ✭ 84 (-35.88%)
Mutual labels:  graphviz
Lein Plantuml
A Leiningen plugin for generating UML diagrams using PlantUML
Stars: ✭ 43 (-67.18%)
Mutual labels:  leiningen
3d Force Graph Vr
3D force-directed graph component in VR
Stars: ✭ 112 (-14.5%)
Mutual labels:  graphviz
Memviz
Visualize your Go data structures using graphviz
Stars: ✭ 1,197 (+813.74%)
Mutual labels:  graphviz
Blast Radius
Interactive visualizations of Terraform dependency graphs using d3.js
Stars: ✭ 1,376 (+950.38%)
Mutual labels:  graphviz
Oligrapher
JavaScript app for displaying annotated network graphs based on data from LittleSis
Stars: ✭ 62 (-52.67%)
Mutual labels:  graphviz
Knife Role Spaghetti
Knife plugin for Chef to draw dependency graphs for roles. Cut through the spaghetti with a knife.
Stars: ✭ 68 (-48.09%)
Mutual labels:  graphviz
Diagram Tools
A number of small tools for generating and manipulating diagrams, mostly based around Graphviz
Stars: ✭ 95 (-27.48%)
Mutual labels:  graphviz
Hpcc Js Wasm
HPCC-Systems Web-Assembly (JavaScript)
Stars: ✭ 56 (-57.25%)
Mutual labels:  graphviz
Protodot
transforming your .proto files into .dot files (and .svg, .png if you happen to have graphviz installed)
Stars: ✭ 107 (-18.32%)
Mutual labels:  graphviz
Kubernetes Plantuml
Kubernetes diagrams using VS Code
Stars: ✭ 48 (-63.36%)
Mutual labels:  graphviz
Vzl
💠 DOT Language Live Editor (GraphViz)
Stars: ✭ 83 (-36.64%)
Mutual labels:  graphviz
Scaladiagrams
Generate class diagrams from scala source code
Stars: ✭ 130 (-0.76%)
Mutual labels:  graphviz
Graphviz.it
Graphviz fiddling website
Stars: ✭ 109 (-16.79%)
Mutual labels:  graphviz
Lein Jupyter
A Leiningen plugin to integrate clojure with jupyter notebook
Stars: ✭ 97 (-25.95%)
Mutual labels:  leiningen

walmartlabs/vizdeps

Clojars Project

We're moving to clj-commons!

An alternative to lein deps :tree that uses Graphviz to present a dependency diagram of all the artifacts (Maven-speak for "libraries") in your project.

Here's an example of a relatively small project:

active-status

A single artifact may be a transitive dependency of multiple other artifacts. vizdeps can show this (lein deps :tree doesn't), and will highlight in red any dependencies with a version mismatch. This can make it much easier to identify version conflicts and provide the best exclusions and overrides.

These dependency graphs can get large; using the --vertical option may make large trees more readable.

rook

To keep the graph from getting any more cluttered, the org.clojure/clojure artifact is treated specially (just the dependency from the project root is shown).

The --prune option is used when managing version conflicts; it removes uninteresting artifacts. Those that remain either have a version conflict (such as commons-codec, below) or transitively depend on an artifact with such a conflict:

rook-purged

Often, you are struck trying to track down why a specific artifact is included. In large projects, the Graphviz chart can become difficult to read. Use the -f / --focus option to limit which artifacts are shown. For example, lein vizdeps --vertical --focus jackson-core:

rook-focused

Installation

Put [walmartlabs/vizdeps "0.2.0"] into the :plugins vector of your :user profile.

The plugin makes use of the dot command, part of Graphviz, which must be installed. On OS X, Graphviz can be installed using Homebrew:

brew install graphviz

On other platforms, Graphviz can be downloaded.

vizdeps task

Usage: lein vizdeps [options]

Options:
  -d, --dev                                          Include :dev dependencies in the graph.
  -f, --focus ARTIFACT                               Excludes artifacts whose names do not match a supplied value. Repeatable.
  -H, --highlight ARTIFACT                           Highlight the artifact, and any dependencies to it, in blue. Repeatable.
  -n, --no-view                                      If given, the image will not be opened after creation.
  -o, --output-file FILE    target/dependencies.pdf  Output file path. Extension chooses format: pdf or png.
  -p, --prune                                        Exclude artifacts and dependencies that do not involve version conflicts.
  -s, --save-dot                                     Save the generated GraphViz DOT file well as the output file.
  -v, --vertical                                     Use a vertical, not horizontal, layout.
  -h, --help                                         This usage summary.

The --highlight option can be repeated; any artifact that contains any of the provided strings will be highlighted.

The --focus option allows you to mark some dependencies for inclusion; every artifact that does not match, or does not transitively depend on a marked artifact, is excluded. This is very useful when trying to work out how a specific artifact is transitively included.

vizconflicts task

Usage: lein vizconflicts [options]

Options:
  -o, --output-file FILE  target/conflicts.pdf  Output file path. Extension chooses format: pdf or png.
  -X, --exclude NAME                            Exclude any project whose name matches the value. Repeatable.
  -a, --artifact NAME                           If given, then only artifacts whose name matches are included. Repeatable.
  -s, --save-dot                                Save the generated GraphViz DOT file well as the output file.
  -n, --no-view                                 If given, the image will not be opened after creation.
  -h, --help                                    This usage summary.

vizconflicts is used in concert with lein-sub to analyze dependencies between and across a multi-module project. visconflicts identifies all artifacts in use across all sub-modules, and identifies where different versions of the same artifact are used. The generated document includes a diagram for each artifact that has such version conflicts.

For very large projects, the resulting diagram can be very large (even overwhelming Graphviz's ability to create a legible layout). Projects can be excluded, using the --exclude option. Alternately, you can focus on a subset of conflicting artifacts using the --artifact option.

When different versions of the same artifact are in use, the output document will include a diagram of how that artifact is used across the different modules:

conflicts

The lines in each chart identify dependencies; solid lines are explicit dependencies, dotted lines are transitive dependencies.

When one version of the artifact is the majority (based on total number of dependencies), it is highlighted in blue (and other versions are drawn in red).

License

Copyright © 2016- Walmartlabs

Distributed under the Apache Software License 2.0.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].