tools

module
Version: v0.2.2 Latest Latest
Warning

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

Go to latest
Published: Nov 11, 2021 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. 2019.1) as well as prebuilt binaries in the releases tab.

The easiest way of using the releases from source is to use a Go package manager such as Godep or Go modules. Alternatively you can use a combination of git clone -b and go get to check out the appropriate tag and download its dependencies.

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. If you decide to use these libraries, please vendor them and expect regular backwards-incompatible changes.

System requirements

We support the last two versions 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.
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.
go
callgraph
Package callgraph defines the call graph and various algorithms and utilities to operate on it.
Package callgraph defines the call graph and various algorithms and utilities to operate on it.
callgraph/cha
Package cha computes the call graph of a Go program using the Class Hierarchy Analysis (CHA) algorithm.
Package cha computes the call graph of a Go program using the Class Hierarchy Analysis (CHA) algorithm.
callgraph/rta
This package provides Rapid Type Analysis (RTA) for Go, a fast algorithm for call graph construction and discovery of reachable code (and hence dead code) and runtime types.
This package provides Rapid Type Analysis (RTA) for Go, a fast algorithm for call graph construction and discovery of reachable code (and hence dead code) and runtime types.
callgraph/static
Package static computes the call graph of a Go program containing only static call edges.
Package static computes the call graph of a Go program containing only static call edges.
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.
lint
Package lintcmd implements the frontend of an analysis runner.
Package lintcmd implements the frontend of an analysis runner.
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 simple contains a linter for Go source code.
Package simple contains a linter for Go source code.
Package staticcheck contains a linter for Go source code.
Package staticcheck contains a linter for Go source code.
typemap
Package typemap defines Map, a mapping from types.Type to interface{} values.
Package typemap defines Map, a mapping from types.Type to interface{} values.
internal
cache
Package cache implements a build artifact cache.
Package cache implements a build artifact cache.
cmd/irdump
irdump: a tool for displaying the IR form of Go programs.
irdump: a tool for displaying the IR form of Go programs.
go/gcimporter
Package gcimporter provides various functions for reading gc-generated object files that can be used to implement the Importer interface defined by the Go 1.5 standard library package.
Package gcimporter provides various functions for reading gc-generated object files that can be used to implement the Importer interface defined by the Go 1.5 standard library package.
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.

Jump to

Keyboard shortcuts

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