tools

module
v0.4.0 Latest Latest
Warning

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

Go to latest
Published: Feb 3, 2023 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
keyify Transforms an unkeyed struct literal into a keyed one.
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

Releases support the current and previous version of Go at the time of release. The master branch supports the current version of Go.

Directories

Path Synopsis
analysis
code
Package code answers structural and type questions about Go code.
Package code answers structural and type questions about Go code.
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
keyify
keyify transforms unkeyed struct literals into a keyed ones.
keyify transforms unkeyed struct literals into a keyed ones.
staticcheck
staticcheck analyses Go code and makes it better.
staticcheck analyses Go code and makes it better.
structlayout
structlayout displays the layout (field sizes and padding) of structs.
structlayout displays the layout (field sizes and padding) of structs.
structlayout-optimize
structlayout-optimize reorders struct fields to minimize the amount of padding.
structlayout-optimize reorders struct fields to minimize the amount of padding.
structlayout-pretty
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-information (SSI) 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-information (SSI) form intermediate representation (IR) for the bodies of functions.
internal
cmd/irdump
irdump: a tool for displaying the IR form of Go programs.
irdump: a tool for displaying the IR form of Go programs.
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.
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.
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.
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