@@ -119,7 +119,46 @@ var (
119119 }
120120)
121121
122+ func NewGovet (cfg * config.GovetSettings ) * goanalysis.Linter {
123+ var settings map [string ]map [string ]interface {}
124+ if cfg != nil {
125+ settings = cfg .Settings
126+ }
127+ return goanalysis .NewLinter (
128+ "govet" ,
129+ "Vet examines Go source code and reports suspicious constructs, " +
130+ "such as Printf calls whose arguments do not align with the format string" ,
131+ analyzersFromConfig (cfg ),
132+ settings ,
133+ ).WithLoadMode (goanalysis .LoadModeTypesInfo )
134+ }
135+
136+ func analyzersFromConfig (cfg * config.GovetSettings ) []* analysis.Analyzer {
137+ if cfg == nil {
138+ return defaultAnalyzers
139+ }
140+
141+ if cfg .CheckShadowing {
142+ // Keeping for backward compatibility.
143+ cfg .Enable = append (cfg .Enable , shadow .Analyzer .Name )
144+ }
145+
146+ var enabledAnalyzers []* analysis.Analyzer
147+ for _ , a := range allAnalyzers {
148+ if isAnalyzerEnabled (a .Name , cfg , defaultAnalyzers ) {
149+ enabledAnalyzers = append (enabledAnalyzers , a )
150+ }
151+ }
152+
153+ return enabledAnalyzers
154+ }
155+
122156func isAnalyzerEnabled (name string , cfg * config.GovetSettings , defaultAnalyzers []* analysis.Analyzer ) bool {
157+ if (name == nilness .Analyzer .Name || name == unusedwrite .Analyzer .Name ) &&
158+ config .IsGreaterThanOrEqualGo118 (cfg .Go ) {
159+ return false
160+ }
161+
123162 if cfg .EnableAll {
124163 for _ , n := range cfg .Disable {
125164 if n == name {
@@ -128,58 +167,28 @@ func isAnalyzerEnabled(name string, cfg *config.GovetSettings, defaultAnalyzers
128167 }
129168 return true
130169 }
170+
131171 // Raw for loops should be OK on small slice lengths.
132172 for _ , n := range cfg .Enable {
133173 if n == name {
134174 return true
135175 }
136176 }
177+
137178 for _ , n := range cfg .Disable {
138179 if n == name {
139180 return false
140181 }
141182 }
183+
142184 if cfg .DisableAll {
143185 return false
144186 }
187+
145188 for _ , a := range defaultAnalyzers {
146189 if a .Name == name {
147190 return true
148191 }
149192 }
150193 return false
151194}
152-
153- func analyzersFromConfig (cfg * config.GovetSettings ) []* analysis.Analyzer {
154- if cfg == nil {
155- return defaultAnalyzers
156- }
157-
158- if cfg .CheckShadowing {
159- // Keeping for backward compatibility.
160- cfg .Enable = append (cfg .Enable , shadow .Analyzer .Name )
161- }
162-
163- var enabledAnalyzers []* analysis.Analyzer
164- for _ , a := range allAnalyzers {
165- if isAnalyzerEnabled (a .Name , cfg , defaultAnalyzers ) {
166- enabledAnalyzers = append (enabledAnalyzers , a )
167- }
168- }
169-
170- return enabledAnalyzers
171- }
172-
173- func NewGovet (cfg * config.GovetSettings ) * goanalysis.Linter {
174- var settings map [string ]map [string ]interface {}
175- if cfg != nil {
176- settings = cfg .Settings
177- }
178- return goanalysis .NewLinter (
179- "govet" ,
180- "Vet examines Go source code and reports suspicious constructs, " +
181- "such as Printf calls whose arguments do not align with the format string" ,
182- analyzersFromConfig (cfg ),
183- settings ,
184- ).WithLoadMode (goanalysis .LoadModeTypesInfo )
185- }
0 commit comments