tools

module
v0.8.2 Latest Latest
Warning

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

Go to latest
Published: Oct 12, 2026 License: MIT

README

Staticcheck logo

The advanced Go linter

Staticcheck is a state of the art linter for the Go programming language. Using static analysis, it finds bugs and performance issues, offers simplifications, and enforces style rules.

Financial support by private and corporate sponsors guarantees the tool's continued development. Please become a sponsor if you or your company rely on Staticcheck.

Documentation

You can find extensive documentation on Staticcheck on its website.

Installation

Releases

It is recommended that you run released versions of the tools. These releases can be found as git tags (e.g. 2022.1).

The easiest way of installing a release is by using go install, for example go install honnef.co/go/tools/cmd/staticcheck@2022.1. Alternatively, we also offer prebuilt binaries.

You can find more information about installation and releases in the documentation.

Master

You can also run the master branch instead of a release. Note that while the master branch is usually stable, it may still contain new checks or backwards incompatible changes that break your build. By using the master branch you agree to become a beta tester.

Tools

All of the following tools can be found in the cmd/ directory. Each tool is accompanied by its own README, describing it in more detail.

Tool Description
staticcheck Go static analysis, detecting bugs, performance issues, and much more.
structlayout Displays the layout (field sizes and padding) of structs.
structlayout-optimize Reorders struct fields to minimize the amount of padding.
structlayout-pretty Formats the output of structlayout with ASCII art.

Libraries

In addition to the aforementioned tools, this repository contains the libraries necessary to implement these tools.

Unless otherwise noted, none of these libraries have stable APIs. Their main purpose is to aid the implementation of the tools. You'll have to expect semiregular backwards-incompatible changes if you decide to use these libraries.

System requirements

Staticcheck can be compiled and run with the latest release of Go. It can analyze code targeting any version of Go upto the latest release.

Directories

Path Synopsis
analysis
callcheck
Package callcheck provides a framework for validating arguments in function calls.
Package callcheck provides a framework for validating arguments in function calls.
code
Package code answers structural and type questions about Go code.
Package code answers structural and type questions about Go code.
dfa
dfa/dense
Package flow implements a monotone flow analysis framework.
Package flow implements a monotone flow analysis framework.
dfa/sparse
Package sparse provides types and functions for implementing sparse data-flow analyses.
Package sparse provides types and functions for implementing sparse data-flow analyses.
edit
Package edit contains helpers for creating suggested fixes.
Package edit contains helpers for creating suggested fixes.
lint
Package lint provides abstractions on top of go/analysis.
Package lint provides abstractions on top of go/analysis.
cmd
staticcheck command
staticcheck analyses Go code and makes it better.
staticcheck analyses Go code and makes it better.
structlayout command
structlayout displays the layout (field sizes and padding) of structs.
structlayout displays the layout (field sizes and padding) of structs.
structlayout-optimize command
structlayout-optimize reorders struct fields to minimize the amount of padding.
structlayout-optimize reorders struct fields to minimize the amount of padding.
structlayout-pretty command
structlayout-pretty formats the output of structlayout with ASCII art.
structlayout-pretty formats the output of structlayout with ASCII art.
Package debug contains helpers for debugging static analyses.
Package debug contains helpers for debugging static analyses.
go
gcsizes
Package gcsizes provides a types.Sizes implementation that adheres to the rules used by the gc compiler.
Package gcsizes provides a types.Sizes implementation that adheres to the rules used by the gc compiler.
ir
Package ir defines a representation of the elements of Go programs (packages, types, functions, variables and constants) using a static single-assignment (SSA) form intermediate representation (IR) for the bodies of functions.
Package ir defines a representation of the elements of Go programs (packages, types, functions, variables and constants) using a static single-assignment (SSA) form intermediate representation (IR) for the bodies of functions.
internal
cmd/gogrep command
cmd/irdump command
irdump: a tool for displaying the IR form of Go programs.
irdump: a tool for displaying the IR form of Go programs.
cmd/unused command
passes/buildir
Package buildir defines an Analyzer that constructs the IR of an error-free package and returns the set of all functions within it.
Package buildir defines an Analyzer that constructs the IR of an error-free package and returns the set of all functions within it.
renameio
Package renameio writes files atomically by renaming temporary files.
Package renameio writes files atomically by renaming temporary files.
robustio
Package robustio wraps I/O functions that are prone to failure on Windows, transparently retrying errors up to an arbitrary timeout.
Package robustio wraps I/O functions that are prone to failure on Windows, transparently retrying errors up to an arbitrary timeout.
xtools-internal/analysis/typeindex
Package typeindex defines an analyzer that provides a honnef.co/go/tools/internal/xtools-internal/typesinternal/typeindex.Index.
Package typeindex defines an analyzer that provides a honnef.co/go/tools/internal/xtools-internal/typesinternal/typeindex.Index.
xtools-internal/astutil
Package astutil provides various AST utility functions for gopls.
Package astutil provides various AST utility functions for gopls.
xtools-internal/astutil/free
Package free defines utilities for computing the free variables of a syntax tree without type information.
Package free defines utilities for computing the free variables of a syntax tree without type information.
xtools-internal/expect
Package expect provides support for interpreting structured comments in Go source code (including go.mod and go.work files) as test expectations.
Package expect provides support for interpreting structured comments in Go source code (including go.mod and go.work files) as test expectations.
xtools-internal/gocommand
Package gocommand is a helper for calling the go command.
Package gocommand is a helper for calling the go command.
xtools-internal/graph
Package graph provides a common abstraction for directed graphs and standard graph algorithms.
Package graph provides a common abstraction for directed graphs and standard graph algorithms.
xtools-internal/graph/graphfmt
Package graphfmt serializes graphs to external representations.
Package graphfmt serializes graphs to external representations.
xtools-internal/packagestest
Package packagestest creates temporary projects on disk for testing go tools on.
Package packagestest creates temporary projects on disk for testing go tools on.
xtools-internal/proxydir
Package proxydir provides functions for writing module data to a directory in proxy format, so that it can be used as a module proxy by setting GOPROXY="file://<dir>".
Package proxydir provides functions for writing module data to a directory in proxy format, so that it can be used as a module proxy by setting GOPROXY="file://<dir>".
xtools-internal/testenv
Package testenv contains helper functions for skipping tests based on which tools are present in the environment.
Package testenv contains helper functions for skipping tests based on which tools are present in the environment.
xtools-internal/testfiles
Package testfiles provides utilities for writing Go tests with files in testdata.
Package testfiles provides utilities for writing Go tests with files in testdata.
xtools-internal/typeparams
Package typeparams contains common utilities for writing tools that interact with generic Go code, as introduced with Go 1.18.
Package typeparams contains common utilities for writing tools that interact with generic Go code, as introduced with Go 1.18.
xtools-internal/typeparams/genericfeatures
The genericfeatures package provides utilities for detecting usage of generic programming in Go packages.
The genericfeatures package provides utilities for detecting usage of generic programming in Go packages.
xtools-internal/typesinternal
Package typesinternal provides helpful operators for dealing with go/types:
Package typesinternal provides helpful operators for dealing with go/types:
xtools-internal/typesinternal/typeindex
Package typeindex provides an Index of type information for a package, allowing efficient lookup of, say, whether a given symbol is referenced and, if so, where from; or of the inspector.Cursor for the declaration of a particular types.Object symbol.
Package typeindex provides an Index of type information for a package, allowing efficient lookup of, say, whether a given symbol is referenced and, if so, where from; or of the inspector.Cursor for the declaration of a particular types.Object symbol.
Package knowledge contains manually collected information about Go APIs.
Package knowledge contains manually collected information about Go APIs.
Package lintcmd implements the frontend of an analysis runner.
Package lintcmd implements the frontend of an analysis runner.
cache
Package cache implements a build artifact cache.
Package cache implements a build artifact cache.
cache/cacheprog
Package cacheprog defines the protocol for a GOCACHEPROG program.
Package cacheprog defines the protocol for a GOCACHEPROG program.
runner
Package runner implements a go/analysis runner.
Package runner implements a go/analysis runner.
Package pattern implements a simple language for pattern matching Go ASTs.
Package pattern implements a simple language for pattern matching Go ASTs.
Package printf implements a parser for fmt.Printf-style format strings.
Package printf implements a parser for fmt.Printf-style format strings.
Package quickfix contains analyzes that implement code refactorings.
Package quickfix contains analyzes that implement code refactorings.
Package simple contains analyzes that simplify code.
Package simple contains analyzes that simplify code.
Package staticcheck contains analyzes that find bugs and performance issues.
Package staticcheck contains analyzes that find bugs and performance issues.
Package stylecheck contains analyzes that enforce style rules.
Package stylecheck contains analyzes that enforce style rules.
Package unused contains code for finding unused code.
Package unused contains code for finding unused code.
website module

Jump to

Keyboard shortcuts

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