@@ -204,18 +204,30 @@ func (m *Manager) build(enabledByDefaultLinters []*linter.Config) map[string]*li
204204}
205205
206206func (m * Manager ) combineGoAnalysisLinters (linters map [string ]* linter.Config ) {
207+ mlConfig := & linter.Config {}
208+
207209 var goanalysisLinters []* goanalysis.Linter
208210 goanalysisPresets := map [string ]bool {}
211+
209212 for _ , lc := range linters {
210213 lnt , ok := lc .Linter .(* goanalysis.Linter )
211214 if ! ok {
212215 continue
213216 }
217+
214218 if lnt .LoadMode () == goanalysis .LoadModeWholeProgram {
215219 // It's ineffective by CPU and memory to run whole-program and incremental analyzers at once.
216220 continue
217221 }
222+
223+ mlConfig .LoadMode |= lc .LoadMode
224+
225+ if lc .IsSlowLinter () {
226+ mlConfig .ConsiderSlow ()
227+ }
228+
218229 goanalysisLinters = append (goanalysisLinters , lnt )
230+
219231 for _ , p := range lc .InPresets {
220232 goanalysisPresets [p ] = true
221233 }
@@ -245,22 +257,14 @@ func (m *Manager) combineGoAnalysisLinters(linters map[string]*linter.Config) {
245257 return a .Name () <= b .Name ()
246258 })
247259
248- ml : = goanalysis .NewMetaLinter (goanalysisLinters )
260+ mlConfig . Linter = goanalysis .NewMetaLinter (goanalysisLinters )
249261
250262 presets := maps .Keys (goanalysisPresets )
251263 sort .Strings (presets )
264+ mlConfig .InPresets = presets
252265
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
262267
263- linters [ml .Name ()] = mlConfig
264268 m .debugf ("Combined %d go/analysis linters into one metalinter" , len (goanalysisLinters ))
265269}
266270
0 commit comments