@@ -69,7 +69,7 @@ import (
6969// Analyzers are immutable, since they are shared across multiple LSP sessions.
7070type Analyzer struct {
7171 analyzer * analysis.Analyzer
72- enabled bool
72+ nonDefault bool
7373 actionKinds []protocol.CodeActionKind
7474 severity protocol.DiagnosticSeverity
7575 tags []protocol.DiagnosticTag
@@ -80,7 +80,7 @@ func (a *Analyzer) Analyzer() *analysis.Analyzer { return a.analyzer }
8080
8181// EnabledByDefault reports whether the analyzer is enabled by default for all sessions.
8282// This value can be configured per-analysis in user settings.
83- func (a * Analyzer ) EnabledByDefault () bool { return a . enabled }
83+ func (a * Analyzer ) EnabledByDefault () bool { return ! a . nonDefault }
8484
8585// ActionKinds is the set of kinds of code action this analyzer produces.
8686//
@@ -109,86 +109,101 @@ func (a *Analyzer) String() string { return a.analyzer.String() }
109109var DefaultAnalyzers = make (map [string ]* Analyzer ) // initialized below
110110
111111func init () {
112- // The traditional vet suite:
113112 analyzers := []* Analyzer {
114113 // The traditional vet suite:
115- {analyzer : appends .Analyzer , enabled : true },
116- {analyzer : asmdecl .Analyzer , enabled : true },
117- {analyzer : assign .Analyzer , enabled : true },
118- {analyzer : atomic .Analyzer , enabled : true },
119- {analyzer : bools .Analyzer , enabled : true },
120- {analyzer : buildtag .Analyzer , enabled : true },
121- {analyzer : cgocall .Analyzer , enabled : true },
122- {analyzer : composite .Analyzer , enabled : true },
123- {analyzer : copylock .Analyzer , enabled : true },
124- {analyzer : defers .Analyzer , enabled : true },
125- {analyzer : deprecated .Analyzer , enabled : true , severity : protocol .SeverityHint , tags : []protocol.DiagnosticTag {protocol .Deprecated }},
126- {analyzer : directive .Analyzer , enabled : true },
127- {analyzer : errorsas .Analyzer , enabled : true },
128- {analyzer : framepointer .Analyzer , enabled : true },
129- {analyzer : httpresponse .Analyzer , enabled : true },
130- {analyzer : ifaceassert .Analyzer , enabled : true },
131- {analyzer : loopclosure .Analyzer , enabled : true },
132- {analyzer : lostcancel .Analyzer , enabled : true },
133- {analyzer : nilfunc .Analyzer , enabled : true },
134- {analyzer : printf .Analyzer , enabled : true },
135- {analyzer : shift .Analyzer , enabled : true },
136- {analyzer : sigchanyzer .Analyzer , enabled : true },
137- {analyzer : slog .Analyzer , enabled : true },
138- {analyzer : stdmethods .Analyzer , enabled : true },
139- {analyzer : stdversion .Analyzer , enabled : true },
140- {analyzer : stringintconv .Analyzer , enabled : true },
141- {analyzer : structtag .Analyzer , enabled : true },
142- {analyzer : testinggoroutine .Analyzer , enabled : true },
143- {analyzer : tests .Analyzer , enabled : true },
144- {analyzer : timeformat .Analyzer , enabled : true },
145- {analyzer : unmarshal .Analyzer , enabled : true },
146- {analyzer : unreachable .Analyzer , enabled : true },
147- {analyzer : unsafeptr .Analyzer , enabled : true },
148- {analyzer : unusedresult .Analyzer , enabled : true },
114+ {analyzer : appends .Analyzer },
115+ {analyzer : asmdecl .Analyzer },
116+ {analyzer : assign .Analyzer },
117+ {analyzer : atomic .Analyzer },
118+ {analyzer : bools .Analyzer },
119+ {analyzer : buildtag .Analyzer },
120+ {analyzer : cgocall .Analyzer },
121+ {analyzer : composite .Analyzer },
122+ {analyzer : copylock .Analyzer },
123+ {analyzer : defers .Analyzer },
124+ {analyzer : deprecated .Analyzer , severity : protocol .SeverityHint , tags : []protocol.DiagnosticTag {protocol .Deprecated }},
125+ {analyzer : directive .Analyzer },
126+ {analyzer : errorsas .Analyzer },
127+ {analyzer : framepointer .Analyzer },
128+ {analyzer : httpresponse .Analyzer },
129+ {analyzer : ifaceassert .Analyzer },
130+ {analyzer : loopclosure .Analyzer },
131+ {analyzer : lostcancel .Analyzer },
132+ {analyzer : nilfunc .Analyzer },
133+ {analyzer : printf .Analyzer },
134+ {analyzer : shift .Analyzer },
135+ {analyzer : sigchanyzer .Analyzer },
136+ {analyzer : slog .Analyzer },
137+ {analyzer : stdmethods .Analyzer },
138+ {analyzer : stdversion .Analyzer },
139+ {analyzer : stringintconv .Analyzer },
140+ {analyzer : structtag .Analyzer },
141+ {analyzer : testinggoroutine .Analyzer },
142+ {analyzer : tests .Analyzer },
143+ {analyzer : timeformat .Analyzer },
144+ {analyzer : unmarshal .Analyzer },
145+ {analyzer : unreachable .Analyzer },
146+ {analyzer : unsafeptr .Analyzer },
147+ {analyzer : unusedresult .Analyzer },
149148
150149 // not suitable for vet:
151150 // - some (nilness, yield) use go/ssa; see #59714.
152151 // - others don't meet the "frequency" criterion;
153152 // see GOROOT/src/cmd/vet/README.
154- // - some (modernize) report diagnostics on perfectly valid code (hence severity=info)
155- {analyzer : atomicalign .Analyzer , enabled : true },
156- {analyzer : deepequalerrors .Analyzer , enabled : true },
157- {analyzer : nilness .Analyzer , enabled : true }, // uses go/ssa
158- {analyzer : yield .Analyzer , enabled : true }, // uses go/ssa
159- {analyzer : sortslice .Analyzer , enabled : true },
160- {analyzer : embeddirective .Analyzer , enabled : true },
161- {analyzer : waitgroup .Analyzer , enabled : true }, // to appear in cmd/vet@go1.25
162- {analyzer : hostport .Analyzer , enabled : true }, // to appear in cmd/vet@go1.25
163- {analyzer : modernize .Analyzer , enabled : true , severity : protocol .SeverityInformation },
153+ {analyzer : atomicalign .Analyzer },
154+ {analyzer : deepequalerrors .Analyzer },
155+ {analyzer : nilness .Analyzer }, // uses go/ssa
156+ {analyzer : yield .Analyzer }, // uses go/ssa
157+ {analyzer : sortslice .Analyzer },
158+ {analyzer : embeddirective .Analyzer },
159+ {analyzer : waitgroup .Analyzer }, // to appear in cmd/vet@go1.25
160+ {analyzer : hostport .Analyzer }, // to appear in cmd/vet@go1.25
164161
165162 // disabled due to high false positives
166- {analyzer : shadow .Analyzer , enabled : false }, // very noisy
163+ {analyzer : shadow .Analyzer , nonDefault : true }, // very noisy
167164 // fieldalignment is not even off-by-default; see #67762.
168165
169- // "simplifiers": analyzers that offer mere style fixes
170- // gofmt -s suite:
171- {analyzer : simplifycompositelit .Analyzer , enabled : true , actionKinds : []protocol.CodeActionKind {protocol .SourceFixAll , protocol .QuickFix }},
172- {analyzer : simplifyrange .Analyzer , enabled : true , actionKinds : []protocol.CodeActionKind {protocol .SourceFixAll , protocol .QuickFix }},
173- {analyzer : simplifyslice .Analyzer , enabled : true , actionKinds : []protocol.CodeActionKind {protocol .SourceFixAll , protocol .QuickFix }},
174- // other simplifiers:
175- {analyzer : infertypeargs .Analyzer , enabled : true , severity : protocol .SeverityHint },
176- {analyzer : unusedparams .Analyzer , enabled : true },
177- {analyzer : unusedfunc .Analyzer , enabled : true },
178- {analyzer : unusedwrite .Analyzer , enabled : true }, // uses go/ssa
166+ // simplifiers and modernizers
167+ //
168+ // These analyzers offer mere style fixes on correct code,
169+ // thus they will never appear in cmd/vet and
170+ // their severity level is "information".
171+ //
172+ // gofmt -s suite
173+ {
174+ analyzer : simplifycompositelit .Analyzer ,
175+ actionKinds : []protocol.CodeActionKind {protocol .SourceFixAll , protocol .QuickFix },
176+ severity : protocol .SeverityInformation ,
177+ },
178+ {
179+ analyzer : simplifyrange .Analyzer ,
180+ actionKinds : []protocol.CodeActionKind {protocol .SourceFixAll , protocol .QuickFix },
181+ severity : protocol .SeverityInformation ,
182+ },
183+ {
184+ analyzer : simplifyslice .Analyzer ,
185+ actionKinds : []protocol.CodeActionKind {protocol .SourceFixAll , protocol .QuickFix },
186+ severity : protocol .SeverityInformation ,
187+ },
188+ // other simplifiers
189+ {analyzer : infertypeargs .Analyzer , severity : protocol .SeverityInformation },
190+ {analyzer : unusedparams .Analyzer , severity : protocol .SeverityInformation },
191+ {analyzer : unusedfunc .Analyzer , severity : protocol .SeverityInformation },
192+ {analyzer : unusedwrite .Analyzer , severity : protocol .SeverityInformation }, // uses go/ssa
193+ {analyzer : modernize .Analyzer , severity : protocol .SeverityInformation },
179194
180195 // type-error analyzers
181196 // These analyzers enrich go/types errors with suggested fixes.
182- {analyzer : fillreturns .Analyzer , enabled : true },
183- {analyzer : nonewvars .Analyzer , enabled : true },
184- {analyzer : noresultvalues .Analyzer , enabled : true },
197+ {analyzer : fillreturns .Analyzer },
198+ {analyzer : nonewvars .Analyzer },
199+ {analyzer : noresultvalues .Analyzer },
185200 // TODO(rfindley): why isn't the 'unusedvariable' analyzer enabled, if it
186201 // is only enhancing type errors with suggested fixes?
187202 //
188203 // In particular, enabling this analyzer could cause unused variables to be
189204 // greyed out, (due to the 'deletions only' fix). That seems like a nice UI
190205 // feature.
191- {analyzer : unusedvariable .Analyzer , enabled : false },
206+ {analyzer : unusedvariable .Analyzer , nonDefault : true },
192207 }
193208 for _ , analyzer := range analyzers {
194209 DefaultAnalyzers [analyzer .analyzer .Name ] = analyzer
0 commit comments