gotypegraph

Generate definitions and references graph.

Usage

❯ gotypegraph -h
Usage of gotypegraph:
  gotypegraph [flags] -type TYPE patterns...
Flags:
  -accept.name string
        Accept objects whose name matches this.
  -accept.pkg string
        Accept packages whose name matches this.
  -deny.name string
        Deny objects whose name matches this.
  -deny.pkg string
        Deny packages whose name matches this.
  -foreign
        Search definitions in foreign packages.
  -private
        Search private definitions.
  -stat
        Generate stat graph when type is dot.
  -type string
        Output format. string, json or dot. (default "dot")
  -universe
        Search definitions in builtin packages.

Example

Use graphviz.

❯ gotypegraph ./... > /tmp/example.dot
❯ dot -Tsvg /tmp/example.dot -o img/example.svg

A gray region is a package.

An arrow is a dependency, the arrow’s tail is the reference and the arrow’s head is the definition.
The arrow’s label is the count of the same dependency (no label means 1).

A square region in a package is a definition, func, var, etc.
In is the number of times it is referred by the other definitions.
Out is the number of times it refers the other definitions.
UniqIn is the unique In, UniqOut is the unique Out.
IO is In + Out.

Emphasized arrows and definitions have many dependencies.

On mouseover, an arrow and a definition displays additional information,
an arrow displays the tail and the head, a definition displays dependencies in lines.

Generate graph with -stat:

❯ gotypegraph -stat ./... > /tmp/example_stat.dot
❯ dot -Tsvg /tmp/example_stat.dot -o img/example_stat.svg

The graph displays dependencies aggregated by package.

GitHub

View Github