...
1# Go Tools
2
3[](https://pkg.go.dev/golang.org/x/tools)
4
5This repository provides the `golang.org/x/tools` module, comprising
6various tools and packages mostly for static analysis of Go programs,
7some of which are listed below.
8Use the "Go reference" link above for more information about any package.
9
10It also contains the
11[`golang.org/x/tools/gopls`](https://pkg.go.dev/golang.org/x/tools/gopls)
12module, whose root package is a language-server protocol (LSP) server for Go.
13An LSP server analyses the source code of a project and
14responds to requests from a wide range of editors such as VSCode and
15Vim, allowing them to support IDE-like functionality.
16
17<!-- List only packages of general interest below. -->
18
19Selected 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
29These commands may be fetched with a command such as
30```
31go install golang.org/x/tools/cmd/goimports@latest
32```
33
34Selected 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
63Numerous other packages provide more esoteric functionality.
64
65<!-- Some that didn't make the cut:
66
67golang.org/x/tools/benchmark/parse
68golang.org/x/tools/go/ast/astutil
69golang.org/x/tools/go/types/typeutil
70golang.org/x/tools/playground
71golang.org/x/tools/present
72golang.org/x/tools/refactor/importgraph
73golang.org/x/tools/refactor/rename
74golang.org/x/tools/refactor/satisfy
75golang.org/x/tools/txtar
76
77-->
78
79## Contributing
80
81This repository uses Gerrit for code changes.
82To learn how to submit changes, see https://golang.org/doc/contribute.html.
83
84The main issue tracker for the tools repository is located at
85https://github.com/golang/go/issues. Prefix your issue with "x/tools/(your
86subdir):" in the subject line, so it is easy to find.
87
88### JavaScript and CSS Formatting
89
90This repository uses [prettier](https://prettier.io/) to format JS and CSS files.
91
92The version of `prettier` used is 1.18.2.
93
94It is encouraged that all JS and CSS code be run through this before submitting
95a change. However, it is not a strict requirement enforced by CI.
View as plain text