@@ -204,18 +204,30 @@ func (m *Manager) build(enabledByDefaultLinters []*linter.Config) map[string]*li
204
204
}
205
205
206
206
func (m * Manager ) combineGoAnalysisLinters (linters map [string ]* linter.Config ) {
207
+ mlConfig := & linter.Config {}
208
+
207
209
var goanalysisLinters []* goanalysis.Linter
208
210
goanalysisPresets := map [string ]bool {}
211
+
209
212
for _ , lc := range linters {
210
213
lnt , ok := lc .Linter .(* goanalysis.Linter )
211
214
if ! ok {
212
215
continue
213
216
}
217
+
214
218
if lnt .LoadMode () == goanalysis .LoadModeWholeProgram {
215
219
// It's ineffective by CPU and memory to run whole-program and incremental analyzers at once.
216
220
continue
217
221
}
222
+
223
+ mlConfig .LoadMode |= lc .LoadMode
224
+
225
+ if lc .IsSlowLinter () {
226
+ mlConfig .ConsiderSlow ()
227
+ }
228
+
218
229
goanalysisLinters = append (goanalysisLinters , lnt )
230
+
219
231
for _ , p := range lc .InPresets {
220
232
goanalysisPresets [p ] = true
221
233
}
@@ -245,22 +257,14 @@ func (m *Manager) combineGoAnalysisLinters(linters map[string]*linter.Config) {
245
257
return a .Name () <= b .Name ()
246
258
})
247
259
248
- ml : = goanalysis .NewMetaLinter (goanalysisLinters )
260
+ mlConfig . Linter = goanalysis .NewMetaLinter (goanalysisLinters )
249
261
250
262
presets := maps .Keys (goanalysisPresets )
251
263
sort .Strings (presets )
264
+ mlConfig .InPresets = presets
252
265
253
- mlConfig := & linter.Config {
254
- Linter : ml ,
255
- EnabledByDefault : false ,
256
- InPresets : presets ,
257
- AlternativeNames : nil ,
258
- OriginalURL : "" ,
259
- }
260
-
261
- mlConfig = mlConfig .WithLoadForGoAnalysis ()
266
+ linters [mlConfig .Linter .Name ()] = mlConfig
262
267
263
- linters [ml .Name ()] = mlConfig
264
268
m .debugf ("Combined %d go/analysis linters into one metalinter" , len (goanalysisLinters ))
265
269
}
266
270
0 commit comments