...

Text file src/golang.org/x/tools/README.md

Documentation: golang.org/x/tools

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

View as plain text