github.com/cockroachdb/tools@v0.0.0-20230222021103-a6d27438930d/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/go/vcs 71 golang.org/x/tools/godoc 72 golang.org/x/tools/playground 73 golang.org/x/tools/present 74 golang.org/x/tools/refactor/importgraph 75 golang.org/x/tools/refactor/rename 76 golang.org/x/tools/refactor/satisfy 77 golang.org/x/tools/txtar 78 79 --> 80 81 ## Contributing 82 83 This repository uses Gerrit for code changes. 84 To learn how to submit changes, see https://golang.org/doc/contribute.html. 85 86 The main issue tracker for the tools repository is located at 87 https://github.com/golang/go/issues. Prefix your issue with "x/tools/(your 88 subdir):" in the subject line, so it is easy to find. 89 90 ### JavaScript and CSS Formatting 91 92 This repository uses [prettier](https://prettier.io/) to format JS and CSS files. 93 94 The version of `prettier` used is 1.18.2. 95 96 It is encouraged that all JS and CSS code be run through this before submitting 97 a change. However, it is not a strict requirement enforced by CI.