goda

command module
v0.0.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 30, 2018 License: MIT Imports: 13 Imported by: 0

README

Goda

Goda is a Go dependency analysis toolkit. It contains a bunch of different things to figure out what your program is using.

Note: the exact syntax of the command line arguments has not yet been finalized. So expect some changes to it.

Cool things it can do:

# draw graph of packages in github.com/loov/goda
goda graph github.com/loov/goda/...:root | dot -Tsvg -o graph.svg

# draw dependcy graph of github.com/loov/goda
goda graph -cluster -short github.com/loov/goda | dot -Tsvg -o graph.svg

# list dependencies of github.com/loov/goda
goda list github.com/loov/goda/...:!root

# list packages shared by github.com/loov/goda/pkgset and github.com/loov/goda/cut
goda list shared(github.com/loov/goda/pkgset, github.com/loov/goda/cut)

# list how much memory each symbol in the final binary is taking
goda nm -h $GOPATH/bin/goda

# list how much dependencies would be removed by cutting a package
goda cut ./...

# print dependency tree of all sub-packages
goda tree ./...

# print stats while building a go program
go build -a --toolexec "goda exec" .

Maybe you noticed that it's using some weird symbols on the command-line while specifying packages. They allow to specify more complex scenarios.

The basic syntax is that you can specify multiple packages:

goda list github.com/loov/goda/... github.com/loov/qloc

By default it will select all the packages and dependencies of those packages. You can select only the packages with :root and without the roots :!root. For example:

goda list github.com/loov/goda/...:root
goda list github.com/loov/goda/...:!root

You can also do basic arithmetic with these sets. For example, if you wish to ignore all golang.org/x/tools and dependencies:

goda list github.com/loov/goda/... - golang.org/x/tools/...

There's also shared which allows to list the shared dependencies:

goda list shared(github.com/loov/goda/exec, github.com/loov/goda/graph)

All of these can of course be combined:

# list packages used by github.com/loov/goda
# excluding golang.org/x/tools/..., but not their dependencies
goda list github.com/loov/goda/...:!root - golang.org/x/tools/...:root

How it differs from go list or go mod

go list and go mod are tightly integrated with Go and can answer simple queries with compatibility. It also serves as good building blocks for other tools.

goda is intended for more complicated queries and analysis. Some of the features can be reproduced by format flags and scripts, however this is an extra step when you want to quickly figure out different parts.

Of course, it should go without saying, they can be used together.

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
ast

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL