.gitignore added
[dotfiles/.git] / .config / coc / extensions / coc-go-data / tools / pkg / mod / golang.org / x / tools@v0.1.0 / internal / lsp / source / api_json.go
1 // Code generated by "golang.org/x/tools/gopls/doc/generate"; DO NOT EDIT.
2
3 package source
4
5 var GeneratedAPIJSON = &APIJSON{
6         Options: map[string][]*OptionJSON{
7                 "User": {
8                         {
9                                 Name: "buildFlags",
10                                 Type: "[]string",
11                                 Doc:  "buildFlags is the set of flags passed on to the build system when invoked.\nIt is applied to queries like `go list`, which is used when discovering files.\nThe most common use is to set `-tags`.\n",
12                                 EnumKeys: EnumKeys{
13                                         ValueType: "",
14                                         Keys:      nil,
15                                 },
16                                 EnumValues: nil,
17                                 Default:    "[]",
18                                 Status:     "",
19                                 Hierarchy:  "build",
20                         },
21                         {
22                                 Name: "env",
23                                 Type: "map[string]string",
24                                 Doc:  "env adds environment variables to external commands run by `gopls`, most notably `go list`.\n",
25                                 EnumKeys: EnumKeys{
26                                         ValueType: "",
27                                         Keys:      nil,
28                                 },
29                                 EnumValues: nil,
30                                 Default:    "{}",
31                                 Status:     "",
32                                 Hierarchy:  "build",
33                         },
34                         {
35                                 Name: "directoryFilters",
36                                 Type: "[]string",
37                                 Doc:  "directoryFilters can be used to exclude unwanted directories from the\nworkspace. By default, all directories are included. Filters are an\noperator, `+` to include and `-` to exclude, followed by a path prefix\nrelative to the workspace folder. They are evaluated in order, and\nthe last filter that applies to a path controls whether it is included.\nThe path prefix can be empty, so an initial `-` excludes everything.\n\nExamples:\nExclude node_modules: `-node_modules`\nInclude only project_a: `-` (exclude everything), `+project_a`\nInclude only project_a, but not node_modules inside it: `-`, `+project_a`, `-project_a/node_modules`\n",
38                                 EnumKeys: EnumKeys{
39                                         ValueType: "",
40                                         Keys:      nil,
41                                 },
42                                 EnumValues: nil,
43                                 Default:    "[]",
44                                 Status:     "",
45                                 Hierarchy:  "build",
46                         },
47                         {
48                                 Name: "expandWorkspaceToModule",
49                                 Type: "bool",
50                                 Doc:  "expandWorkspaceToModule instructs `gopls` to adjust the scope of the\nworkspace to find the best available module root. `gopls` first looks for\na go.mod file in any parent directory of the workspace folder, expanding\nthe scope to that directory if it exists. If no viable parent directory is\nfound, gopls will check if there is exactly one child directory containing\na go.mod file, narrowing the scope to that directory if it exists.\n",
51                                 EnumKeys: EnumKeys{
52                                         ValueType: "",
53                                         Keys:      nil,
54                                 },
55                                 EnumValues: nil,
56                                 Default:    "true",
57                                 Status:     "experimental",
58                                 Hierarchy:  "build",
59                         },
60                         {
61                                 Name: "experimentalWorkspaceModule",
62                                 Type: "bool",
63                                 Doc:  "experimentalWorkspaceModule opts a user into the experimental support\nfor multi-module workspaces.\n",
64                                 EnumKeys: EnumKeys{
65                                         ValueType: "",
66                                         Keys:      nil,
67                                 },
68                                 EnumValues: nil,
69                                 Default:    "false",
70                                 Status:     "experimental",
71                                 Hierarchy:  "build",
72                         },
73                         {
74                                 Name: "experimentalPackageCacheKey",
75                                 Type: "bool",
76                                 Doc:  "experimentalPackageCacheKey controls whether to use a coarser cache key\nfor package type information to increase cache hits. This setting removes\nthe user's environment, build flags, and working directory from the cache\nkey, which should be a safe change as all relevant inputs into the type\nchecking pass are already hashed into the key. This is temporarily guarded\nby an experiment because caching behavior is subtle and difficult to\ncomprehensively test.\n",
77                                 EnumKeys: EnumKeys{
78                                         ValueType: "",
79                                         Keys:      nil,
80                                 },
81                                 EnumValues: nil,
82                                 Default:    "true",
83                                 Status:     "experimental",
84                                 Hierarchy:  "build",
85                         },
86                         {
87                                 Name: "allowModfileModifications",
88                                 Type: "bool",
89                                 Doc:  "allowModfileModifications disables -mod=readonly, allowing imports from\nout-of-scope modules. This option will eventually be removed.\n",
90                                 EnumKeys: EnumKeys{
91                                         ValueType: "",
92                                         Keys:      nil,
93                                 },
94                                 EnumValues: nil,
95                                 Default:    "false",
96                                 Status:     "experimental",
97                                 Hierarchy:  "build",
98                         },
99                         {
100                                 Name: "allowImplicitNetworkAccess",
101                                 Type: "bool",
102                                 Doc:  "allowImplicitNetworkAccess disables GOPROXY=off, allowing implicit module\ndownloads rather than requiring user action. This option will eventually\nbe removed.\n",
103                                 EnumKeys: EnumKeys{
104                                         ValueType: "",
105                                         Keys:      nil,
106                                 },
107                                 EnumValues: nil,
108                                 Default:    "false",
109                                 Status:     "experimental",
110                                 Hierarchy:  "build",
111                         },
112                         {
113                                 Name: "hoverKind",
114                                 Type: "enum",
115                                 Doc:  "hoverKind controls the information that appears in the hover text.\nSingleLine and Structured are intended for use only by authors of editor plugins.\n",
116                                 EnumKeys: EnumKeys{
117                                         ValueType: "",
118                                         Keys:      nil,
119                                 },
120                                 EnumValues: []EnumValue{
121                                         {
122                                                 Value: "\"FullDocumentation\"",
123                                                 Doc:   "",
124                                         },
125                                         {
126                                                 Value: "\"NoDocumentation\"",
127                                                 Doc:   "",
128                                         },
129                                         {
130                                                 Value: "\"SingleLine\"",
131                                                 Doc:   "",
132                                         },
133                                         {
134                                                 Value: "\"Structured\"",
135                                                 Doc:   "`\"Structured\"` is an experimental setting that returns a structured hover format.\nThis format separates the signature from the documentation, so that the client\ncan do more manipulation of these fields.\n\nThis should only be used by clients that support this behavior.\n",
136                                         },
137                                         {
138                                                 Value: "\"SynopsisDocumentation\"",
139                                                 Doc:   "",
140                                         },
141                                 },
142                                 Default:   "\"FullDocumentation\"",
143                                 Status:    "",
144                                 Hierarchy: "ui.documentation",
145                         },
146                         {
147                                 Name: "linkTarget",
148                                 Type: "string",
149                                 Doc:  "linkTarget controls where documentation links go.\nIt might be one of:\n\n* `\"godoc.org\"`\n* `\"pkg.go.dev\"`\n\nIf company chooses to use its own `godoc.org`, its address can be used as well.\n",
150                                 EnumKeys: EnumKeys{
151                                         ValueType: "",
152                                         Keys:      nil,
153                                 },
154                                 EnumValues: nil,
155                                 Default:    "\"pkg.go.dev\"",
156                                 Status:     "",
157                                 Hierarchy:  "ui.documentation",
158                         },
159                         {
160                                 Name: "linksInHover",
161                                 Type: "bool",
162                                 Doc:  "linksInHover toggles the presence of links to documentation in hover.\n",
163                                 EnumKeys: EnumKeys{
164                                         ValueType: "",
165                                         Keys:      nil,
166                                 },
167                                 EnumValues: nil,
168                                 Default:    "true",
169                                 Status:     "",
170                                 Hierarchy:  "ui.documentation",
171                         },
172                         {
173                                 Name: "usePlaceholders",
174                                 Type: "bool",
175                                 Doc:  "placeholders enables placeholders for function parameters or struct\nfields in completion responses.\n",
176                                 EnumKeys: EnumKeys{
177                                         ValueType: "",
178                                         Keys:      nil,
179                                 },
180                                 EnumValues: nil,
181                                 Default:    "false",
182                                 Status:     "",
183                                 Hierarchy:  "ui.completion",
184                         },
185                         {
186                                 Name: "completionBudget",
187                                 Type: "time.Duration",
188                                 Doc:  "completionBudget is the soft latency goal for completion requests. Most\nrequests finish in a couple milliseconds, but in some cases deep\ncompletions can take much longer. As we use up our budget we\ndynamically reduce the search scope to ensure we return timely\nresults. Zero means unlimited.\n",
189                                 EnumKeys: EnumKeys{
190                                         ValueType: "",
191                                         Keys:      nil,
192                                 },
193                                 EnumValues: nil,
194                                 Default:    "\"100ms\"",
195                                 Status:     "debug",
196                                 Hierarchy:  "ui.completion",
197                         },
198                         {
199                                 Name: "matcher",
200                                 Type: "enum",
201                                 Doc:  "matcher sets the algorithm that is used when calculating completion\ncandidates.\n",
202                                 EnumKeys: EnumKeys{
203                                         ValueType: "",
204                                         Keys:      nil,
205                                 },
206                                 EnumValues: []EnumValue{
207                                         {
208                                                 Value: "\"CaseInsensitive\"",
209                                                 Doc:   "",
210                                         },
211                                         {
212                                                 Value: "\"CaseSensitive\"",
213                                                 Doc:   "",
214                                         },
215                                         {
216                                                 Value: "\"Fuzzy\"",
217                                                 Doc:   "",
218                                         },
219                                 },
220                                 Default:   "\"Fuzzy\"",
221                                 Status:    "advanced",
222                                 Hierarchy: "ui.completion",
223                         },
224                         {
225                                 Name: "importShortcut",
226                                 Type: "enum",
227                                 Doc:  "importShortcut specifies whether import statements should link to\ndocumentation or go to definitions.\n",
228                                 EnumKeys: EnumKeys{
229                                         ValueType: "",
230                                         Keys:      nil,
231                                 },
232                                 EnumValues: []EnumValue{
233                                         {
234                                                 Value: "\"Both\"",
235                                                 Doc:   "",
236                                         },
237                                         {
238                                                 Value: "\"Definition\"",
239                                                 Doc:   "",
240                                         },
241                                         {
242                                                 Value: "\"Link\"",
243                                                 Doc:   "",
244                                         },
245                                 },
246                                 Default:   "\"Both\"",
247                                 Status:    "",
248                                 Hierarchy: "ui.navigation",
249                         },
250                         {
251                                 Name: "symbolMatcher",
252                                 Type: "enum",
253                                 Doc:  "symbolMatcher sets the algorithm that is used when finding workspace symbols.\n",
254                                 EnumKeys: EnumKeys{
255                                         ValueType: "",
256                                         Keys:      nil,
257                                 },
258                                 EnumValues: []EnumValue{
259                                         {
260                                                 Value: "\"CaseInsensitive\"",
261                                                 Doc:   "",
262                                         },
263                                         {
264                                                 Value: "\"CaseSensitive\"",
265                                                 Doc:   "",
266                                         },
267                                         {
268                                                 Value: "\"Fuzzy\"",
269                                                 Doc:   "",
270                                         },
271                                 },
272                                 Default:   "\"Fuzzy\"",
273                                 Status:    "advanced",
274                                 Hierarchy: "ui.navigation",
275                         },
276                         {
277                                 Name: "symbolStyle",
278                                 Type: "enum",
279                                 Doc:  "symbolStyle controls how symbols are qualified in symbol responses.\n\nExample Usage:\n\n```json5\n\"gopls\": {\n...\n  \"symbolStyle\": \"dynamic\",\n...\n}\n```\n",
280                                 EnumKeys: EnumKeys{
281                                         ValueType: "",
282                                         Keys:      nil,
283                                 },
284                                 EnumValues: []EnumValue{
285                                         {
286                                                 Value: "\"Dynamic\"",
287                                                 Doc:   "`\"Dynamic\"` uses whichever qualifier results in the highest scoring\nmatch for the given symbol query. Here a \"qualifier\" is any \"/\" or \".\"\ndelimited suffix of the fully qualified symbol. i.e. \"to/pkg.Foo.Field\" or\njust \"Foo.Field\".\n",
288                                         },
289                                         {
290                                                 Value: "\"Full\"",
291                                                 Doc:   "`\"Full\"` is fully qualified symbols, i.e.\n\"path/to/pkg.Foo.Field\".\n",
292                                         },
293                                         {
294                                                 Value: "\"Package\"",
295                                                 Doc:   "`\"Package\"` is package qualified symbols i.e.\n\"pkg.Foo.Field\".\n",
296                                         },
297                                 },
298                                 Default:   "\"Dynamic\"",
299                                 Status:    "advanced",
300                                 Hierarchy: "ui.navigation",
301                         },
302                         {
303                                 Name: "analyses",
304                                 Type: "map[string]bool",
305                                 Doc:  "analyses specify analyses that the user would like to enable or disable.\nA map of the names of analysis passes that should be enabled/disabled.\nA full list of analyzers that gopls uses can be found\n[here](https://github.com/golang/tools/blob/master/gopls/doc/analyzers.md).\n\nExample Usage:\n\n```json5\n...\n\"analyses\": {\n  \"unreachable\": false, // Disable the unreachable analyzer.\n  \"unusedparams\": true  // Enable the unusedparams analyzer.\n}\n...\n```\n",
306                                 EnumKeys: EnumKeys{
307                                         ValueType: "bool",
308                                         Keys: []EnumKey{
309                                                 {
310                                                         Name:    "\"asmdecl\"",
311                                                         Doc:     "report mismatches between assembly files and Go declarations",
312                                                         Default: "true",
313                                                 },
314                                                 {
315                                                         Name:    "\"assign\"",
316                                                         Doc:     "check for useless assignments\n\nThis checker reports assignments of the form x = x or a[i] = a[i].\nThese are almost always useless, and even when they aren't they are\nusually a mistake.",
317                                                         Default: "true",
318                                                 },
319                                                 {
320                                                         Name:    "\"atomic\"",
321                                                         Doc:     "check for common mistakes using the sync/atomic package\n\nThe atomic checker looks for assignment statements of the form:\n\n\tx = atomic.AddUint64(&x, 1)\n\nwhich are not atomic.",
322                                                         Default: "true",
323                                                 },
324                                                 {
325                                                         Name:    "\"atomicalign\"",
326                                                         Doc:     "check for non-64-bits-aligned arguments to sync/atomic functions",
327                                                         Default: "true",
328                                                 },
329                                                 {
330                                                         Name:    "\"bools\"",
331                                                         Doc:     "check for common mistakes involving boolean operators",
332                                                         Default: "true",
333                                                 },
334                                                 {
335                                                         Name:    "\"buildtag\"",
336                                                         Doc:     "check that +build tags are well-formed and correctly located",
337                                                         Default: "true",
338                                                 },
339                                                 {
340                                                         Name:    "\"cgocall\"",
341                                                         Doc:     "detect some violations of the cgo pointer passing rules\n\nCheck for invalid cgo pointer passing.\nThis looks for code that uses cgo to call C code passing values\nwhose types are almost always invalid according to the cgo pointer\nsharing rules.\nSpecifically, it warns about attempts to pass a Go chan, map, func,\nor slice to C, either directly, or via a pointer, array, or struct.",
342                                                         Default: "true",
343                                                 },
344                                                 {
345                                                         Name:    "\"composites\"",
346                                                         Doc:     "check for unkeyed composite literals\n\nThis analyzer reports a diagnostic for composite literals of struct\ntypes imported from another package that do not use the field-keyed\nsyntax. Such literals are fragile because the addition of a new field\n(even if unexported) to the struct will cause compilation to fail.\n\nAs an example,\n\n\terr = &net.DNSConfigError{err}\n\nshould be replaced by:\n\n\terr = &net.DNSConfigError{Err: err}\n",
347                                                         Default: "true",
348                                                 },
349                                                 {
350                                                         Name:    "\"copylocks\"",
351                                                         Doc:     "check for locks erroneously passed by value\n\nInadvertently copying a value containing a lock, such as sync.Mutex or\nsync.WaitGroup, may cause both copies to malfunction. Generally such\nvalues should be referred to through a pointer.",
352                                                         Default: "true",
353                                                 },
354                                                 {
355                                                         Name:    "\"deepequalerrors\"",
356                                                         Doc:     "check for calls of reflect.DeepEqual on error values\n\nThe deepequalerrors checker looks for calls of the form:\n\n    reflect.DeepEqual(err1, err2)\n\nwhere err1 and err2 are errors. Using reflect.DeepEqual to compare\nerrors is discouraged.",
357                                                         Default: "true",
358                                                 },
359                                                 {
360                                                         Name:    "\"errorsas\"",
361                                                         Doc:     "report passing non-pointer or non-error values to errors.As\n\nThe errorsas analysis reports calls to errors.As where the type\nof the second argument is not a pointer to a type implementing error.",
362                                                         Default: "true",
363                                                 },
364                                                 {
365                                                         Name:    "\"fieldalignment\"",
366                                                         Doc:     "find structs that would take less memory if their fields were sorted\n\nThis analyzer find structs that can be rearranged to take less memory, and provides\na suggested edit with the optimal order.\n",
367                                                         Default: "false",
368                                                 },
369                                                 {
370                                                         Name:    "\"httpresponse\"",
371                                                         Doc:     "check for mistakes using HTTP responses\n\nA common mistake when using the net/http package is to defer a function\ncall to close the http.Response Body before checking the error that\ndetermines whether the response is valid:\n\n\tresp, err := http.Head(url)\n\tdefer resp.Body.Close()\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\t// (defer statement belongs here)\n\nThis checker helps uncover latent nil dereference bugs by reporting a\ndiagnostic for such mistakes.",
372                                                         Default: "true",
373                                                 },
374                                                 {
375                                                         Name:    "\"ifaceassert\"",
376                                                         Doc:     "detect impossible interface-to-interface type assertions\n\nThis checker flags type assertions v.(T) and corresponding type-switch cases\nin which the static type V of v is an interface that cannot possibly implement\nthe target interface T. This occurs when V and T contain methods with the same\nname but different signatures. Example:\n\n\tvar v interface {\n\t\tRead()\n\t}\n\t_ = v.(io.Reader)\n\nThe Read method in v has a different signature than the Read method in\nio.Reader, so this assertion cannot succeed.\n",
377                                                         Default: "true",
378                                                 },
379                                                 {
380                                                         Name:    "\"loopclosure\"",
381                                                         Doc:     "check references to loop variables from within nested functions\n\nThis analyzer checks for references to loop variables from within a\nfunction literal inside the loop body. It checks only instances where\nthe function literal is called in a defer or go statement that is the\nlast statement in the loop body, as otherwise we would need whole\nprogram analysis.\n\nFor example:\n\n\tfor i, v := range s {\n\t\tgo func() {\n\t\t\tprintln(i, v) // not what you might expect\n\t\t}()\n\t}\n\nSee: https://golang.org/doc/go_faq.html#closures_and_goroutines",
382                                                         Default: "true",
383                                                 },
384                                                 {
385                                                         Name:    "\"lostcancel\"",
386                                                         Doc:     "check cancel func returned by context.WithCancel is called\n\nThe cancellation function returned by context.WithCancel, WithTimeout,\nand WithDeadline must be called or the new context will remain live\nuntil its parent context is cancelled.\n(The background context is never cancelled.)",
387                                                         Default: "true",
388                                                 },
389                                                 {
390                                                         Name:    "\"nilfunc\"",
391                                                         Doc:     "check for useless comparisons between functions and nil\n\nA useless comparison is one like f == nil as opposed to f() == nil.",
392                                                         Default: "true",
393                                                 },
394                                                 {
395                                                         Name:    "\"printf\"",
396                                                         Doc:     "check consistency of Printf format strings and arguments\n\nThe check applies to known functions (for example, those in package fmt)\nas well as any detected wrappers of known functions.\n\nA function that wants to avail itself of printf checking but is not\nfound by this analyzer's heuristics (for example, due to use of\ndynamic calls) can insert a bogus call:\n\n\tif false {\n\t\t_ = fmt.Sprintf(format, args...) // enable printf checking\n\t}\n\nThe -funcs flag specifies a comma-separated list of names of additional\nknown formatting functions or methods. If the name contains a period,\nit must denote a specific function using one of the following forms:\n\n\tdir/pkg.Function\n\tdir/pkg.Type.Method\n\t(*dir/pkg.Type).Method\n\nOtherwise the name is interpreted as a case-insensitive unqualified\nidentifier such as \"errorf\". Either way, if a listed name ends in f, the\nfunction is assumed to be Printf-like, taking a format string before the\nargument list. Otherwise it is assumed to be Print-like, taking a list\nof arguments with no format string.\n",
397                                                         Default: "true",
398                                                 },
399                                                 {
400                                                         Name:    "\"shadow\"",
401                                                         Doc:     "check for possible unintended shadowing of variables\n\nThis analyzer check for shadowed variables.\nA shadowed variable is a variable declared in an inner scope\nwith the same name and type as a variable in an outer scope,\nand where the outer variable is mentioned after the inner one\nis declared.\n\n(This definition can be refined; the module generates too many\nfalse positives and is not yet enabled by default.)\n\nFor example:\n\n\tfunc BadRead(f *os.File, buf []byte) error {\n\t\tvar err error\n\t\tfor {\n\t\t\tn, err := f.Read(buf) // shadows the function variable 'err'\n\t\t\tif err != nil {\n\t\t\t\tbreak // causes return of wrong value\n\t\t\t}\n\t\t\tfoo(buf)\n\t\t}\n\t\treturn err\n\t}\n",
402                                                         Default: "false",
403                                                 },
404                                                 {
405                                                         Name:    "\"shift\"",
406                                                         Doc:     "check for shifts that equal or exceed the width of the integer",
407                                                         Default: "true",
408                                                 },
409                                                 {
410                                                         Name:    "\"simplifycompositelit\"",
411                                                         Doc:     "check for composite literal simplifications\n\nAn array, slice, or map composite literal of the form:\n\t[]T{T{}, T{}}\nwill be simplified to:\n\t[]T{{}, {}}\n\nThis is one of the simplifications that \"gofmt -s\" applies.",
412                                                         Default: "true",
413                                                 },
414                                                 {
415                                                         Name:    "\"simplifyrange\"",
416                                                         Doc:     "check for range statement simplifications\n\nA range of the form:\n\tfor x, _ = range v {...}\nwill be simplified to:\n\tfor x = range v {...}\n\nA range of the form:\n\tfor _ = range v {...}\nwill be simplified to:\n\tfor range v {...}\n\nThis is one of the simplifications that \"gofmt -s\" applies.",
417                                                         Default: "true",
418                                                 },
419                                                 {
420                                                         Name:    "\"simplifyslice\"",
421                                                         Doc:     "check for slice simplifications\n\nA slice expression of the form:\n\ts[a:len(s)]\nwill be simplified to:\n\ts[a:]\n\nThis is one of the simplifications that \"gofmt -s\" applies.",
422                                                         Default: "true",
423                                                 },
424                                                 {
425                                                         Name:    "\"sortslice\"",
426                                                         Doc:     "check the argument type of sort.Slice\n\nsort.Slice requires an argument of a slice type. Check that\nthe interface{} value passed to sort.Slice is actually a slice.",
427                                                         Default: "true",
428                                                 },
429                                                 {
430                                                         Name:    "\"stdmethods\"",
431                                                         Doc:     "check signature of methods of well-known interfaces\n\nSometimes a type may be intended to satisfy an interface but may fail to\ndo so because of a mistake in its method signature.\nFor example, the result of this WriteTo method should be (int64, error),\nnot error, to satisfy io.WriterTo:\n\n\ttype myWriterTo struct{...}\n        func (myWriterTo) WriteTo(w io.Writer) error { ... }\n\nThis check ensures that each method whose name matches one of several\nwell-known interface methods from the standard library has the correct\nsignature for that interface.\n\nChecked method names include:\n\tFormat GobEncode GobDecode MarshalJSON MarshalXML\n\tPeek ReadByte ReadFrom ReadRune Scan Seek\n\tUnmarshalJSON UnreadByte UnreadRune WriteByte\n\tWriteTo\n",
432                                                         Default: "true",
433                                                 },
434                                                 {
435                                                         Name:    "\"stringintconv\"",
436                                                         Doc:     "check for string(int) conversions\n\nThis checker flags conversions of the form string(x) where x is an integer\n(but not byte or rune) type. Such conversions are discouraged because they\nreturn the UTF-8 representation of the Unicode code point x, and not a decimal\nstring representation of x as one might expect. Furthermore, if x denotes an\ninvalid code point, the conversion cannot be statically rejected.\n\nFor conversions that intend on using the code point, consider replacing them\nwith string(rune(x)). Otherwise, strconv.Itoa and its equivalents return the\nstring representation of the value in the desired base.\n",
437                                                         Default: "true",
438                                                 },
439                                                 {
440                                                         Name:    "\"structtag\"",
441                                                         Doc:     "check that struct field tags conform to reflect.StructTag.Get\n\nAlso report certain struct tags (json, xml) used with unexported fields.",
442                                                         Default: "true",
443                                                 },
444                                                 {
445                                                         Name:    "\"testinggoroutine\"",
446                                                         Doc:     "report calls to (*testing.T).Fatal from goroutines started by a test.\n\nFunctions that abruptly terminate a test, such as the Fatal, Fatalf, FailNow, and\nSkip{,f,Now} methods of *testing.T, must be called from the test goroutine itself.\nThis checker detects calls to these functions that occur within a goroutine\nstarted by the test. For example:\n\nfunc TestFoo(t *testing.T) {\n    go func() {\n        t.Fatal(\"oops\") // error: (*T).Fatal called from non-test goroutine\n    }()\n}\n",
447                                                         Default: "true",
448                                                 },
449                                                 {
450                                                         Name:    "\"tests\"",
451                                                         Doc:     "check for common mistaken usages of tests and examples\n\nThe tests checker walks Test, Benchmark and Example functions checking\nmalformed names, wrong signatures and examples documenting non-existent\nidentifiers.\n\nPlease see the documentation for package testing in golang.org/pkg/testing\nfor the conventions that are enforced for Tests, Benchmarks, and Examples.",
452                                                         Default: "true",
453                                                 },
454                                                 {
455                                                         Name:    "\"unmarshal\"",
456                                                         Doc:     "report passing non-pointer or non-interface values to unmarshal\n\nThe unmarshal analysis reports calls to functions such as json.Unmarshal\nin which the argument type is not a pointer or an interface.",
457                                                         Default: "true",
458                                                 },
459                                                 {
460                                                         Name:    "\"unreachable\"",
461                                                         Doc:     "check for unreachable code\n\nThe unreachable analyzer finds statements that execution can never reach\nbecause they are preceded by an return statement, a call to panic, an\ninfinite loop, or similar constructs.",
462                                                         Default: "true",
463                                                 },
464                                                 {
465                                                         Name:    "\"unsafeptr\"",
466                                                         Doc:     "check for invalid conversions of uintptr to unsafe.Pointer\n\nThe unsafeptr analyzer reports likely incorrect uses of unsafe.Pointer\nto convert integers to pointers. A conversion from uintptr to\nunsafe.Pointer is invalid if it implies that there is a uintptr-typed\nword in memory that holds a pointer value, because that word will be\ninvisible to stack copying and to the garbage collector.",
467                                                         Default: "true",
468                                                 },
469                                                 {
470                                                         Name:    "\"unusedparams\"",
471                                                         Doc:     "check for unused parameters of functions\n\nThe unusedparams analyzer checks functions to see if there are\nany parameters that are not being used.\n\nTo reduce false positives it ignores:\n- methods\n- parameters that do not have a name or are underscored\n- functions in test files\n- functions with empty bodies or those with just a return stmt",
472                                                         Default: "false",
473                                                 },
474                                                 {
475                                                         Name:    "\"unusedresult\"",
476                                                         Doc:     "check for unused results of calls to some functions\n\nSome functions like fmt.Errorf return a result and have no side effects,\nso it is always a mistake to discard the result. This analyzer reports\ncalls to certain functions in which the result of the call is ignored.\n\nThe set of functions may be controlled using flags.",
477                                                         Default: "true",
478                                                 },
479                                                 {
480                                                         Name:    "\"fillreturns\"",
481                                                         Doc:     "suggested fixes for \"wrong number of return values (want %d, got %d)\"\n\nThis checker provides suggested fixes for type errors of the\ntype \"wrong number of return values (want %d, got %d)\". For example:\n\tfunc m() (int, string, *bool, error) {\n\t\treturn\n\t}\nwill turn into\n\tfunc m() (int, string, *bool, error) {\n\t\treturn 0, \"\", nil, nil\n\t}\n\nThis functionality is similar to https://github.com/sqs/goreturns.\n",
482                                                         Default: "true",
483                                                 },
484                                                 {
485                                                         Name:    "\"nonewvars\"",
486                                                         Doc:     "suggested fixes for \"no new vars on left side of :=\"\n\nThis checker provides suggested fixes for type errors of the\ntype \"no new vars on left side of :=\". For example:\n\tz := 1\n\tz := 2\nwill turn into\n\tz := 1\n\tz = 2\n",
487                                                         Default: "true",
488                                                 },
489                                                 {
490                                                         Name:    "\"noresultvalues\"",
491                                                         Doc:     "suggested fixes for \"no result values expected\"\n\nThis checker provides suggested fixes for type errors of the\ntype \"no result values expected\". For example:\n\tfunc z() { return nil }\nwill turn into\n\tfunc z() { return }\n",
492                                                         Default: "true",
493                                                 },
494                                                 {
495                                                         Name:    "\"undeclaredname\"",
496                                                         Doc:     "suggested fixes for \"undeclared name: <>\"\n\nThis checker provides suggested fixes for type errors of the\ntype \"undeclared name: <>\". It will insert a new statement:\n\"<> := \".",
497                                                         Default: "true",
498                                                 },
499                                                 {
500                                                         Name:    "\"fillstruct\"",
501                                                         Doc:     "note incomplete struct initializations\n\nThis analyzer provides diagnostics for any struct literals that do not have\nany fields initialized. Because the suggested fix for this analysis is\nexpensive to compute, callers should compute it separately, using the\nSuggestedFix function below.\n",
502                                                         Default: "true",
503                                                 },
504                                         },
505                                 },
506                                 EnumValues: nil,
507                                 Default:    "{}",
508                                 Status:     "",
509                                 Hierarchy:  "ui.diagnostic",
510                         },
511                         {
512                                 Name: "staticcheck",
513                                 Type: "bool",
514                                 Doc:  "staticcheck enables additional analyses from staticcheck.io.\n",
515                                 EnumKeys: EnumKeys{
516                                         ValueType: "",
517                                         Keys:      nil,
518                                 },
519                                 EnumValues: nil,
520                                 Default:    "false",
521                                 Status:     "experimental",
522                                 Hierarchy:  "ui.diagnostic",
523                         },
524                         {
525                                 Name: "annotations",
526                                 Type: "map[string]bool",
527                                 Doc:  "annotations specifies the various kinds of optimization diagnostics\nthat should be reported by the gc_details command.\n",
528                                 EnumKeys: EnumKeys{
529                                         ValueType: "bool",
530                                         Keys: []EnumKey{
531                                                 {
532                                                         Name:    "\"bounds\"",
533                                                         Doc:     "`\"bounds\"` controls bounds checking diagnostics.\n",
534                                                         Default: "true",
535                                                 },
536                                                 {
537                                                         Name:    "\"escape\"",
538                                                         Doc:     "`\"escape\"` controls diagnostics about escape choices.\n",
539                                                         Default: "true",
540                                                 },
541                                                 {
542                                                         Name:    "\"inline\"",
543                                                         Doc:     "`\"inline\"` controls diagnostics about inlining choices.\n",
544                                                         Default: "true",
545                                                 },
546                                                 {
547                                                         Name:    "\"nil\"",
548                                                         Doc:     "`\"nil\"` controls nil checks.\n",
549                                                         Default: "true",
550                                                 },
551                                         },
552                                 },
553                                 EnumValues: nil,
554                                 Default:    "{\"bounds\":true,\"escape\":true,\"inline\":true,\"nil\":true}",
555                                 Status:     "experimental",
556                                 Hierarchy:  "ui.diagnostic",
557                         },
558                         {
559                                 Name: "experimentalDiagnosticsDelay",
560                                 Type: "time.Duration",
561                                 Doc:  "experimentalDiagnosticsDelay controls the amount of time that gopls waits\nafter the most recent file modification before computing deep diagnostics.\nSimple diagnostics (parsing and type-checking) are always run immediately\non recently modified packages.\n\nThis option must be set to a valid duration string, for example `\"250ms\"`.\n",
562                                 EnumKeys: EnumKeys{
563                                         ValueType: "",
564                                         Keys:      nil,
565                                 },
566                                 EnumValues: nil,
567                                 Default:    "\"250ms\"",
568                                 Status:     "experimental",
569                                 Hierarchy:  "ui.diagnostic",
570                         },
571                         {
572                                 Name: "codelenses",
573                                 Type: "map[string]bool",
574                                 Doc:  "codelenses overrides the enabled/disabled state of code lenses. See the\n\"Code Lenses\" section of the\n[Settings page](https://github.com/golang/tools/blob/master/gopls/doc/settings.md)\nfor the list of supported lenses.\n\nExample Usage:\n\n```json5\n\"gopls\": {\n...\n  \"codelens\": {\n    \"generate\": false,  // Don't show the `go generate` lens.\n    \"gc_details\": true  // Show a code lens toggling the display of gc's choices.\n  }\n...\n}\n```\n",
575                                 EnumKeys: EnumKeys{
576                                         ValueType: "bool",
577                                         Keys: []EnumKey{
578                                                 {
579                                                         Name:    "\"generate\"",
580                                                         Doc:     "generate runs `go generate` for a given directory.\n",
581                                                         Default: "true",
582                                                 },
583                                                 {
584                                                         Name:    "\"regenerate_cgo\"",
585                                                         Doc:     "regenerate_cgo regenerates cgo definitions.\n",
586                                                         Default: "true",
587                                                 },
588                                                 {
589                                                         Name:    "\"test\"",
590                                                         Doc:     "test runs `go test` for a specific test function.\n",
591                                                         Default: "false",
592                                                 },
593                                                 {
594                                                         Name:    "\"tidy\"",
595                                                         Doc:     "tidy runs `go mod tidy` for a module.\n",
596                                                         Default: "true",
597                                                 },
598                                                 {
599                                                         Name:    "\"upgrade_dependency\"",
600                                                         Doc:     "upgrade_dependency upgrades a dependency.\n",
601                                                         Default: "true",
602                                                 },
603                                                 {
604                                                         Name:    "\"vendor\"",
605                                                         Doc:     "vendor runs `go mod vendor` for a module.\n",
606                                                         Default: "true",
607                                                 },
608                                                 {
609                                                         Name:    "\"gc_details\"",
610                                                         Doc:     "gc_details controls calculation of gc annotations.\n",
611                                                         Default: "false",
612                                                 },
613                                         },
614                                 },
615                                 EnumValues: nil,
616                                 Default:    "{\"gc_details\":false,\"generate\":true,\"regenerate_cgo\":true,\"tidy\":true,\"upgrade_dependency\":true,\"vendor\":true}",
617                                 Status:     "",
618                                 Hierarchy:  "ui",
619                         },
620                         {
621                                 Name: "semanticTokens",
622                                 Type: "bool",
623                                 Doc:  "semanticTokens controls whether the LSP server will send\nsemantic tokens to the client.\n",
624                                 EnumKeys: EnumKeys{
625                                         ValueType: "",
626                                         Keys:      nil,
627                                 },
628                                 EnumValues: nil,
629                                 Default:    "false",
630                                 Status:     "experimental",
631                                 Hierarchy:  "ui",
632                         },
633                         {
634                                 Name: "local",
635                                 Type: "string",
636                                 Doc:  "local is the equivalent of the `goimports -local` flag, which puts\nimports beginning with this string after third-party packages. It should\nbe the prefix of the import path whose imports should be grouped\nseparately.\n",
637                                 EnumKeys: EnumKeys{
638                                         ValueType: "",
639                                         Keys:      nil,
640                                 },
641                                 EnumValues: nil,
642                                 Default:    "\"\"",
643                                 Status:     "",
644                                 Hierarchy:  "formatting",
645                         },
646                         {
647                                 Name: "gofumpt",
648                                 Type: "bool",
649                                 Doc:  "gofumpt indicates if we should run gofumpt formatting.\n",
650                                 EnumKeys: EnumKeys{
651                                         ValueType: "",
652                                         Keys:      nil,
653                                 },
654                                 EnumValues: nil,
655                                 Default:    "false",
656                                 Status:     "",
657                                 Hierarchy:  "formatting",
658                         },
659                         {
660                                 Name: "verboseOutput",
661                                 Type: "bool",
662                                 Doc:  "verboseOutput enables additional debug logging.\n",
663                                 EnumKeys: EnumKeys{
664                                         ValueType: "",
665                                         Keys:      nil,
666                                 },
667                                 EnumValues: nil,
668                                 Default:    "false",
669                                 Status:     "debug",
670                                 Hierarchy:  "",
671                         },
672                 },
673         },
674         Commands: []*CommandJSON{
675                 {
676                         Command: "gopls.generate",
677                         Title:   "Run go generate",
678                         Doc:     "generate runs `go generate` for a given directory.\n",
679                 },
680                 {
681                         Command: "gopls.fill_struct",
682                         Title:   "Fill struct",
683                         Doc:     "fill_struct is a gopls command to fill a struct with default\nvalues.\n",
684                 },
685                 {
686                         Command: "gopls.regenerate_cgo",
687                         Title:   "Regenerate cgo",
688                         Doc:     "regenerate_cgo regenerates cgo definitions.\n",
689                 },
690                 {
691                         Command: "gopls.test",
692                         Title:   "Run test(s)",
693                         Doc:     "test runs `go test` for a specific test function.\n",
694                 },
695                 {
696                         Command: "gopls.tidy",
697                         Title:   "Run go mod tidy",
698                         Doc:     "tidy runs `go mod tidy` for a module.\n",
699                 },
700                 {
701                         Command: "gopls.update_go_sum",
702                         Title:   "Update go.sum",
703                         Doc:     "update_go_sum updates the go.sum file for a module.\n",
704                 },
705                 {
706                         Command: "gopls.undeclared_name",
707                         Title:   "Undeclared name",
708                         Doc:     "undeclared_name adds a variable declaration for an undeclared\nname.\n",
709                 },
710                 {
711                         Command: "gopls.go_get_package",
712                         Title:   "go get package",
713                         Doc:     "go_get_package runs `go get` to fetch a package.\n",
714                 },
715                 {
716                         Command: "gopls.add_dependency",
717                         Title:   "Add dependency",
718                         Doc:     "add_dependency adds a dependency.\n",
719                 },
720                 {
721                         Command: "gopls.upgrade_dependency",
722                         Title:   "Upgrade dependency",
723                         Doc:     "upgrade_dependency upgrades a dependency.\n",
724                 },
725                 {
726                         Command: "gopls.remove_dependency",
727                         Title:   "Remove dependency",
728                         Doc:     "remove_dependency removes a dependency.\n",
729                 },
730                 {
731                         Command: "gopls.vendor",
732                         Title:   "Run go mod vendor",
733                         Doc:     "vendor runs `go mod vendor` for a module.\n",
734                 },
735                 {
736                         Command: "gopls.extract_variable",
737                         Title:   "Extract to variable",
738                         Doc:     "extract_variable extracts an expression to a variable.\n",
739                 },
740                 {
741                         Command: "gopls.extract_function",
742                         Title:   "Extract to function",
743                         Doc:     "extract_function extracts statements to a function.\n",
744                 },
745                 {
746                         Command: "gopls.gc_details",
747                         Title:   "Toggle gc_details",
748                         Doc:     "gc_details controls calculation of gc annotations.\n",
749                 },
750                 {
751                         Command: "gopls.generate_gopls_mod",
752                         Title:   "Generate gopls.mod",
753                         Doc:     "generate_gopls_mod (re)generates the gopls.mod file.\n",
754                 },
755         },
756         Lenses: []*LensJSON{
757                 {
758                         Lens:  "generate",
759                         Title: "Run go generate",
760                         Doc:   "generate runs `go generate` for a given directory.\n",
761                 },
762                 {
763                         Lens:  "regenerate_cgo",
764                         Title: "Regenerate cgo",
765                         Doc:   "regenerate_cgo regenerates cgo definitions.\n",
766                 },
767                 {
768                         Lens:  "test",
769                         Title: "Run test(s)",
770                         Doc:   "test runs `go test` for a specific test function.\n",
771                 },
772                 {
773                         Lens:  "tidy",
774                         Title: "Run go mod tidy",
775                         Doc:   "tidy runs `go mod tidy` for a module.\n",
776                 },
777                 {
778                         Lens:  "upgrade_dependency",
779                         Title: "Upgrade dependency",
780                         Doc:   "upgrade_dependency upgrades a dependency.\n",
781                 },
782                 {
783                         Lens:  "vendor",
784                         Title: "Run go mod vendor",
785                         Doc:   "vendor runs `go mod vendor` for a module.\n",
786                 },
787                 {
788                         Lens:  "gc_details",
789                         Title: "Toggle gc_details",
790                         Doc:   "gc_details controls calculation of gc annotations.\n",
791                 },
792         },
793         Analyzers: []*AnalyzerJSON{
794                 {
795                         Name:    "asmdecl",
796                         Doc:     "report mismatches between assembly files and Go declarations",
797                         Default: true,
798                 },
799                 {
800                         Name:    "assign",
801                         Doc:     "check for useless assignments\n\nThis checker reports assignments of the form x = x or a[i] = a[i].\nThese are almost always useless, and even when they aren't they are\nusually a mistake.",
802                         Default: true,
803                 },
804                 {
805                         Name:    "atomic",
806                         Doc:     "check for common mistakes using the sync/atomic package\n\nThe atomic checker looks for assignment statements of the form:\n\n\tx = atomic.AddUint64(&x, 1)\n\nwhich are not atomic.",
807                         Default: true,
808                 },
809                 {
810                         Name:    "atomicalign",
811                         Doc:     "check for non-64-bits-aligned arguments to sync/atomic functions",
812                         Default: true,
813                 },
814                 {
815                         Name:    "bools",
816                         Doc:     "check for common mistakes involving boolean operators",
817                         Default: true,
818                 },
819                 {
820                         Name:    "buildtag",
821                         Doc:     "check that +build tags are well-formed and correctly located",
822                         Default: true,
823                 },
824                 {
825                         Name:    "cgocall",
826                         Doc:     "detect some violations of the cgo pointer passing rules\n\nCheck for invalid cgo pointer passing.\nThis looks for code that uses cgo to call C code passing values\nwhose types are almost always invalid according to the cgo pointer\nsharing rules.\nSpecifically, it warns about attempts to pass a Go chan, map, func,\nor slice to C, either directly, or via a pointer, array, or struct.",
827                         Default: true,
828                 },
829                 {
830                         Name:    "composites",
831                         Doc:     "check for unkeyed composite literals\n\nThis analyzer reports a diagnostic for composite literals of struct\ntypes imported from another package that do not use the field-keyed\nsyntax. Such literals are fragile because the addition of a new field\n(even if unexported) to the struct will cause compilation to fail.\n\nAs an example,\n\n\terr = &net.DNSConfigError{err}\n\nshould be replaced by:\n\n\terr = &net.DNSConfigError{Err: err}\n",
832                         Default: true,
833                 },
834                 {
835                         Name:    "copylocks",
836                         Doc:     "check for locks erroneously passed by value\n\nInadvertently copying a value containing a lock, such as sync.Mutex or\nsync.WaitGroup, may cause both copies to malfunction. Generally such\nvalues should be referred to through a pointer.",
837                         Default: true,
838                 },
839                 {
840                         Name:    "deepequalerrors",
841                         Doc:     "check for calls of reflect.DeepEqual on error values\n\nThe deepequalerrors checker looks for calls of the form:\n\n    reflect.DeepEqual(err1, err2)\n\nwhere err1 and err2 are errors. Using reflect.DeepEqual to compare\nerrors is discouraged.",
842                         Default: true,
843                 },
844                 {
845                         Name:    "errorsas",
846                         Doc:     "report passing non-pointer or non-error values to errors.As\n\nThe errorsas analysis reports calls to errors.As where the type\nof the second argument is not a pointer to a type implementing error.",
847                         Default: true,
848                 },
849                 {
850                         Name:    "fieldalignment",
851                         Doc:     "find structs that would take less memory if their fields were sorted\n\nThis analyzer find structs that can be rearranged to take less memory, and provides\na suggested edit with the optimal order.\n",
852                         Default: false,
853                 },
854                 {
855                         Name:    "httpresponse",
856                         Doc:     "check for mistakes using HTTP responses\n\nA common mistake when using the net/http package is to defer a function\ncall to close the http.Response Body before checking the error that\ndetermines whether the response is valid:\n\n\tresp, err := http.Head(url)\n\tdefer resp.Body.Close()\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\t// (defer statement belongs here)\n\nThis checker helps uncover latent nil dereference bugs by reporting a\ndiagnostic for such mistakes.",
857                         Default: true,
858                 },
859                 {
860                         Name:    "ifaceassert",
861                         Doc:     "detect impossible interface-to-interface type assertions\n\nThis checker flags type assertions v.(T) and corresponding type-switch cases\nin which the static type V of v is an interface that cannot possibly implement\nthe target interface T. This occurs when V and T contain methods with the same\nname but different signatures. Example:\n\n\tvar v interface {\n\t\tRead()\n\t}\n\t_ = v.(io.Reader)\n\nThe Read method in v has a different signature than the Read method in\nio.Reader, so this assertion cannot succeed.\n",
862                         Default: true,
863                 },
864                 {
865                         Name:    "loopclosure",
866                         Doc:     "check references to loop variables from within nested functions\n\nThis analyzer checks for references to loop variables from within a\nfunction literal inside the loop body. It checks only instances where\nthe function literal is called in a defer or go statement that is the\nlast statement in the loop body, as otherwise we would need whole\nprogram analysis.\n\nFor example:\n\n\tfor i, v := range s {\n\t\tgo func() {\n\t\t\tprintln(i, v) // not what you might expect\n\t\t}()\n\t}\n\nSee: https://golang.org/doc/go_faq.html#closures_and_goroutines",
867                         Default: true,
868                 },
869                 {
870                         Name:    "lostcancel",
871                         Doc:     "check cancel func returned by context.WithCancel is called\n\nThe cancellation function returned by context.WithCancel, WithTimeout,\nand WithDeadline must be called or the new context will remain live\nuntil its parent context is cancelled.\n(The background context is never cancelled.)",
872                         Default: true,
873                 },
874                 {
875                         Name:    "nilfunc",
876                         Doc:     "check for useless comparisons between functions and nil\n\nA useless comparison is one like f == nil as opposed to f() == nil.",
877                         Default: true,
878                 },
879                 {
880                         Name:    "printf",
881                         Doc:     "check consistency of Printf format strings and arguments\n\nThe check applies to known functions (for example, those in package fmt)\nas well as any detected wrappers of known functions.\n\nA function that wants to avail itself of printf checking but is not\nfound by this analyzer's heuristics (for example, due to use of\ndynamic calls) can insert a bogus call:\n\n\tif false {\n\t\t_ = fmt.Sprintf(format, args...) // enable printf checking\n\t}\n\nThe -funcs flag specifies a comma-separated list of names of additional\nknown formatting functions or methods. If the name contains a period,\nit must denote a specific function using one of the following forms:\n\n\tdir/pkg.Function\n\tdir/pkg.Type.Method\n\t(*dir/pkg.Type).Method\n\nOtherwise the name is interpreted as a case-insensitive unqualified\nidentifier such as \"errorf\". Either way, if a listed name ends in f, the\nfunction is assumed to be Printf-like, taking a format string before the\nargument list. Otherwise it is assumed to be Print-like, taking a list\nof arguments with no format string.\n",
882                         Default: true,
883                 },
884                 {
885                         Name:    "shadow",
886                         Doc:     "check for possible unintended shadowing of variables\n\nThis analyzer check for shadowed variables.\nA shadowed variable is a variable declared in an inner scope\nwith the same name and type as a variable in an outer scope,\nand where the outer variable is mentioned after the inner one\nis declared.\n\n(This definition can be refined; the module generates too many\nfalse positives and is not yet enabled by default.)\n\nFor example:\n\n\tfunc BadRead(f *os.File, buf []byte) error {\n\t\tvar err error\n\t\tfor {\n\t\t\tn, err := f.Read(buf) // shadows the function variable 'err'\n\t\t\tif err != nil {\n\t\t\t\tbreak // causes return of wrong value\n\t\t\t}\n\t\t\tfoo(buf)\n\t\t}\n\t\treturn err\n\t}\n",
887                         Default: false,
888                 },
889                 {
890                         Name:    "shift",
891                         Doc:     "check for shifts that equal or exceed the width of the integer",
892                         Default: true,
893                 },
894                 {
895                         Name:    "simplifycompositelit",
896                         Doc:     "check for composite literal simplifications\n\nAn array, slice, or map composite literal of the form:\n\t[]T{T{}, T{}}\nwill be simplified to:\n\t[]T{{}, {}}\n\nThis is one of the simplifications that \"gofmt -s\" applies.",
897                         Default: true,
898                 },
899                 {
900                         Name:    "simplifyrange",
901                         Doc:     "check for range statement simplifications\n\nA range of the form:\n\tfor x, _ = range v {...}\nwill be simplified to:\n\tfor x = range v {...}\n\nA range of the form:\n\tfor _ = range v {...}\nwill be simplified to:\n\tfor range v {...}\n\nThis is one of the simplifications that \"gofmt -s\" applies.",
902                         Default: true,
903                 },
904                 {
905                         Name:    "simplifyslice",
906                         Doc:     "check for slice simplifications\n\nA slice expression of the form:\n\ts[a:len(s)]\nwill be simplified to:\n\ts[a:]\n\nThis is one of the simplifications that \"gofmt -s\" applies.",
907                         Default: true,
908                 },
909                 {
910                         Name:    "sortslice",
911                         Doc:     "check the argument type of sort.Slice\n\nsort.Slice requires an argument of a slice type. Check that\nthe interface{} value passed to sort.Slice is actually a slice.",
912                         Default: true,
913                 },
914                 {
915                         Name:    "stdmethods",
916                         Doc:     "check signature of methods of well-known interfaces\n\nSometimes a type may be intended to satisfy an interface but may fail to\ndo so because of a mistake in its method signature.\nFor example, the result of this WriteTo method should be (int64, error),\nnot error, to satisfy io.WriterTo:\n\n\ttype myWriterTo struct{...}\n        func (myWriterTo) WriteTo(w io.Writer) error { ... }\n\nThis check ensures that each method whose name matches one of several\nwell-known interface methods from the standard library has the correct\nsignature for that interface.\n\nChecked method names include:\n\tFormat GobEncode GobDecode MarshalJSON MarshalXML\n\tPeek ReadByte ReadFrom ReadRune Scan Seek\n\tUnmarshalJSON UnreadByte UnreadRune WriteByte\n\tWriteTo\n",
917                         Default: true,
918                 },
919                 {
920                         Name:    "stringintconv",
921                         Doc:     "check for string(int) conversions\n\nThis checker flags conversions of the form string(x) where x is an integer\n(but not byte or rune) type. Such conversions are discouraged because they\nreturn the UTF-8 representation of the Unicode code point x, and not a decimal\nstring representation of x as one might expect. Furthermore, if x denotes an\ninvalid code point, the conversion cannot be statically rejected.\n\nFor conversions that intend on using the code point, consider replacing them\nwith string(rune(x)). Otherwise, strconv.Itoa and its equivalents return the\nstring representation of the value in the desired base.\n",
922                         Default: true,
923                 },
924                 {
925                         Name:    "structtag",
926                         Doc:     "check that struct field tags conform to reflect.StructTag.Get\n\nAlso report certain struct tags (json, xml) used with unexported fields.",
927                         Default: true,
928                 },
929                 {
930                         Name:    "testinggoroutine",
931                         Doc:     "report calls to (*testing.T).Fatal from goroutines started by a test.\n\nFunctions that abruptly terminate a test, such as the Fatal, Fatalf, FailNow, and\nSkip{,f,Now} methods of *testing.T, must be called from the test goroutine itself.\nThis checker detects calls to these functions that occur within a goroutine\nstarted by the test. For example:\n\nfunc TestFoo(t *testing.T) {\n    go func() {\n        t.Fatal(\"oops\") // error: (*T).Fatal called from non-test goroutine\n    }()\n}\n",
932                         Default: true,
933                 },
934                 {
935                         Name:    "tests",
936                         Doc:     "check for common mistaken usages of tests and examples\n\nThe tests checker walks Test, Benchmark and Example functions checking\nmalformed names, wrong signatures and examples documenting non-existent\nidentifiers.\n\nPlease see the documentation for package testing in golang.org/pkg/testing\nfor the conventions that are enforced for Tests, Benchmarks, and Examples.",
937                         Default: true,
938                 },
939                 {
940                         Name:    "unmarshal",
941                         Doc:     "report passing non-pointer or non-interface values to unmarshal\n\nThe unmarshal analysis reports calls to functions such as json.Unmarshal\nin which the argument type is not a pointer or an interface.",
942                         Default: true,
943                 },
944                 {
945                         Name:    "unreachable",
946                         Doc:     "check for unreachable code\n\nThe unreachable analyzer finds statements that execution can never reach\nbecause they are preceded by an return statement, a call to panic, an\ninfinite loop, or similar constructs.",
947                         Default: true,
948                 },
949                 {
950                         Name:    "unsafeptr",
951                         Doc:     "check for invalid conversions of uintptr to unsafe.Pointer\n\nThe unsafeptr analyzer reports likely incorrect uses of unsafe.Pointer\nto convert integers to pointers. A conversion from uintptr to\nunsafe.Pointer is invalid if it implies that there is a uintptr-typed\nword in memory that holds a pointer value, because that word will be\ninvisible to stack copying and to the garbage collector.",
952                         Default: true,
953                 },
954                 {
955                         Name:    "unusedparams",
956                         Doc:     "check for unused parameters of functions\n\nThe unusedparams analyzer checks functions to see if there are\nany parameters that are not being used.\n\nTo reduce false positives it ignores:\n- methods\n- parameters that do not have a name or are underscored\n- functions in test files\n- functions with empty bodies or those with just a return stmt",
957                         Default: false,
958                 },
959                 {
960                         Name:    "unusedresult",
961                         Doc:     "check for unused results of calls to some functions\n\nSome functions like fmt.Errorf return a result and have no side effects,\nso it is always a mistake to discard the result. This analyzer reports\ncalls to certain functions in which the result of the call is ignored.\n\nThe set of functions may be controlled using flags.",
962                         Default: true,
963                 },
964                 {
965                         Name:    "fillreturns",
966                         Doc:     "suggested fixes for \"wrong number of return values (want %d, got %d)\"\n\nThis checker provides suggested fixes for type errors of the\ntype \"wrong number of return values (want %d, got %d)\". For example:\n\tfunc m() (int, string, *bool, error) {\n\t\treturn\n\t}\nwill turn into\n\tfunc m() (int, string, *bool, error) {\n\t\treturn 0, \"\", nil, nil\n\t}\n\nThis functionality is similar to https://github.com/sqs/goreturns.\n",
967                         Default: true,
968                 },
969                 {
970                         Name:    "nonewvars",
971                         Doc:     "suggested fixes for \"no new vars on left side of :=\"\n\nThis checker provides suggested fixes for type errors of the\ntype \"no new vars on left side of :=\". For example:\n\tz := 1\n\tz := 2\nwill turn into\n\tz := 1\n\tz = 2\n",
972                         Default: true,
973                 },
974                 {
975                         Name:    "noresultvalues",
976                         Doc:     "suggested fixes for \"no result values expected\"\n\nThis checker provides suggested fixes for type errors of the\ntype \"no result values expected\". For example:\n\tfunc z() { return nil }\nwill turn into\n\tfunc z() { return }\n",
977                         Default: true,
978                 },
979                 {
980                         Name:    "undeclaredname",
981                         Doc:     "suggested fixes for \"undeclared name: <>\"\n\nThis checker provides suggested fixes for type errors of the\ntype \"undeclared name: <>\". It will insert a new statement:\n\"<> := \".",
982                         Default: true,
983                 },
984                 {
985                         Name:    "fillstruct",
986                         Doc:     "note incomplete struct initializations\n\nThis analyzer provides diagnostics for any struct literals that do not have\nany fields initialized. Because the suggested fix for this analysis is\nexpensive to compute, callers should compute it separately, using the\nSuggestedFix function below.\n",
987                         Default: true,
988                 },
989         },
990 }