Go Tools is a collection of packages and command-line utilities for static analysis of Go programs, along with gopls, a language-server protocol server that enables IDE-like functionality in editors.
The repository addresses the need for programmatic analysis and tooling around Go source code. It provides foundational packages like go/ssa for intermediate representation, go/packages for loading and type-checking complete programs, and go/analysis as a framework for building modular analysis tools. These building blocks allow developers to inspect, understand, and transform Go code. The gopls language server uses these packages to respond to editor requests, enabling features like code completion, diagnostics, and navigation across a wide range of editors including VSCode and Vim. Specialized commands like goimports automate import management, callgraph visualizes program structure, and stringer generates boilerplate code for enum types.
Adoption suits teams building Go analysis tools, linters, or refactoring utilities who want to avoid reimplementing core analysis infrastructure. The go/analysis framework in particular provides a standardized way to write composable analysis passes. Developers integrating Go into their editor should consider gopls if their editor supports the language server protocol. The repository also serves as a reference for understanding Go's type system and AST structure through its public packages.
The project uses Gerrit for code contributions rather than pull requests on GitHub, with the authoritative repository hosted on go.googlesource.com. Issue tracking occurs on the main Go issue tracker with a required prefix convention. JavaScript and CSS formatting follows prettier conventions, though enforcement is not automated in CI.