The ctrlflow Analyzer builds a control-flow graph (see golang.org/x/tools/go/cfg) for each named and unnamed function in the package. It computes for each function whether it can never return, either because the function is an intrinsic that stops the thread (e.g. os.Exit), or because control never reaches a return statement, or because the function inevitably calls another function that never returns. For each such function it exports a noReturn fact. This change also: - adds 'inspect', another Analyzer that builds an optimized AST traversal table for use by nearly every other Analyzer. - changes analysistest.Run to return the analysis result to enable further testing. (This required changing it to analyze one package at a time, which is no less efficient, and is the typical case.) Change-Id: I877e2b2363a365a9976aa9c2719ad3fba4df2634 Reviewed-on: https://go-review.googlesource.com/c/139478 Reviewed-by: Michael Matloob <matloob@golang.org> |
||
---|---|---|
benchmark/parse | ||
blog | ||
cmd | ||
container/intsets | ||
cover | ||
go | ||
godoc | ||
imports | ||
internal | ||
playground | ||
present | ||
refactor | ||
third_party | ||
.gitattributes | ||
.gitignore | ||
AUTHORS | ||
CONTRIBUTING.md | ||
CONTRIBUTORS | ||
LICENSE | ||
PATENTS | ||
README.md | ||
codereview.cfg |
README.md
Go Tools
This subrepository holds the source for various packages and tools that support the Go programming language.
Some of the tools, godoc
and vet
for example, are included in binary Go
distributions.
Others, including the Go guru
and the test coverage tool, can be fetched with
go get
.
Packages include a type-checker for Go and an implementation of the Static Single Assignment form (SSA) representation for Go programs.
Download/Install
The easiest way to install is to run go get -u golang.org/x/tools/...
. You can
also manually git clone the repository to $GOPATH/src/golang.org/x/tools
.
Report Issues / Send Patches
This repository uses Gerrit for code changes. To learn how to submit changes to this repository, see https://golang.org/doc/contribute.html.
The main issue tracker for the tools repository is located at https://github.com/golang/go/issues. Prefix your issue with "x/tools/(your subdir):" in the subject line, so it is easy to find.