golang.org/x/tools@v0.21.1-0.20240520172518-788d39e776b1/README.md (about) 1 # Go Tools 2 3 [![PkgGoDev](https://pkg.go.dev/badge/golang.org/x/tools)](https://pkg.go.dev/golang.org/x/tools) 4 5 This repository provides the `golang.org/x/tools` module, comprising 6 various tools and packages mostly for static analysis of Go programs, 7 some of which are listed below. 8 Use the "Go reference" link above for more information about any package. 9 10 It also contains the 11 [`golang.org/x/tools/gopls`](https://pkg.go.dev/golang.org/x/tools/gopls) 12 module, whose root package is a language-server protocol (LSP) server for Go. 13 An LSP server analyses the source code of a project and 14 responds to requests from a wide range of editors such as VSCode and 15 Vim, allowing them to support IDE-like functionality. 16 17 <!-- List only packages of general interest below. --> 18 19 Selected commands: 20 21 - `cmd/goimports` formats a Go program like `go fmt` and additionally 22 inserts import statements for any packages required by the file 23 after it is edited. 24 - `cmd/callgraph` prints the call graph of a Go program. 25 - `cmd/digraph` is a utility for manipulating directed graphs in textual notation. 26 - `cmd/stringer` generates declarations (including a `String` method) for "enum" types. 27 - `cmd/toolstash` is a utility to simplify working with multiple versions of the Go toolchain. 28 29 These commands may be fetched with a command such as 30 ``` 31 go install golang.org/x/tools/cmd/goimports@latest 32 ``` 33 34 Selected packages: 35 36 - `go/ssa` provides a static single-assignment form (SSA) intermediate 37 representation (IR) for Go programs, similar to a typical compiler, 38 for use by analysis tools. 39 40 - `go/packages` provides a simple interface for loading, parsing, and 41 type checking a complete Go program from source code. 42 43 - `go/analysis` provides a framework for modular static analysis of Go 44 programs. 45 46 - `go/callgraph` provides call graphs of Go programs using a variety 47 of algorithms with different trade-offs. 48 49 - `go/ast/inspector` provides an optimized means of traversing a Go 50 parse tree for use in analysis tools. 51 52 - `go/cfg` provides a simple control-flow graph (CFG) for a Go function. 53 54 - `go/expect` reads Go source files used as test inputs and interprets 55 special comments within them as queries or assertions for testing. 56 57 - `go/gcexportdata` and `go/gccgoexportdata` read and write the binary 58 files containing type information used by the standard and `gccgo` compilers. 59 60 - `go/types/objectpath` provides a stable naming scheme for named 61 entities ("objects") in the `go/types` API. 62 63 Numerous other packages provide more esoteric functionality. 64 65 <!-- Some that didn't make the cut: 66 67 golang.org/x/tools/benchmark/parse 68 golang.org/x/tools/go/ast/astutil 69 golang.org/x/tools/go/types/typeutil 70 golang.org/x/tools/playground 71 golang.org/x/tools/present 72 golang.org/x/tools/refactor/importgraph 73 golang.org/x/tools/refactor/rename 74 golang.org/x/tools/refactor/satisfy 75 golang.org/x/tools/txtar 76 77 --> 78 79 ## Contributing 80 81 This repository uses Gerrit for code changes. 82 To learn how to submit changes, see https://golang.org/doc/contribute.html. 83 84 The main issue tracker for the tools repository is located at 85 https://github.com/golang/go/issues. Prefix your issue with "x/tools/(your 86 subdir):" in the subject line, so it is easy to find. 87 88 ### JavaScript and CSS Formatting 89 90 This repository uses [prettier](https://prettier.io/) to format JS and CSS files. 91 92 The version of `prettier` used is 1.18.2. 93 94 It is encouraged that all JS and CSS code be run through this before submitting 95 a change. However, it is not a strict requirement enforced by CI.