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.