This guide shows how to run depstat against the etcd repository. It focuses on multi-module usage, excluding tooling, and common analysis commands (stats, list, graph, cycles, archived, diff, why).
- An etcd checkout (main branch)
depstatinstalled (go install github.com/kubernetes-sigs/depstat@latest)jq(for JSON inspection)
export ETCD_DIR=<your-etcd-checkout> # e.g. ~/go/src/github.com/etcd-io/etcdBuild the module list once and reuse it:
ETCD_MODS="go.etcd.io/etcd/v3,go.etcd.io/etcd/api/v3,go.etcd.io/etcd/client/pkg/v3,\
go.etcd.io/etcd/client/v3,go.etcd.io/etcd/etcdctl/v3,go.etcd.io/etcd/etcdutl/v3,\
go.etcd.io/etcd/pkg/v3,go.etcd.io/etcd/server/v3,go.etcd.io/etcd/tests/v3,\
go.etcd.io/etcd/tools/v3,go.etcd.io/etcd/tools/rw-heatmaps/v3,go.etcd.io/etcd/tools/testgrid-analysis/v3"Tip: If you want core-only analysis (excluding tooling), keep a second list without the tools modules and use
--exclude-modules "go.etcd.io/etcd/tools/*".
depstat stats -m "$ETCD_MODS" --json --dir "$ETCD_DIR" | jqCore-only stats:
depstat stats -m "$ETCD_MODS" --exclude-modules "go.etcd.io/etcd/tools/*" --json --dir "$ETCD_DIR" | jqdepstat list -m "$ETCD_MODS" --split-test-only --dir "$ETCD_DIR"depstat graph -m "$ETCD_MODS" --dot --show-edge-types --dir "$ETCD_DIR" | dot -Tsvg -o etcd-graph.svgTopology JSON:
depstat graph -m "$ETCD_MODS" --json --dir "$ETCD_DIR" | jqdepstat cycles -m "$ETCD_MODS" --summary --dir "$ETCD_DIR"Limit cycle length:
depstat cycles -m "$ETCD_MODS" --max-length 2 --summary --json --dir "$ETCD_DIR" | jqdepstat archived -m "$ETCD_MODS" --github-token-path /tmp/gh-token --json --dir "$ETCD_DIR" | jqdepstat diff v3.5.0 v3.6.0 -m "$ETCD_MODS" --json --dir "$ETCD_DIR" | jqdepstat why google.golang.org/grpc -m "$ETCD_MODS" --dot --dir "$ETCD_DIR" | dot -Tsvg -o etcd-why-grpc.svg