@@ -309,20 +309,16 @@ func getEnabledLintersSet(cfg *config.Config) map[string]Linter { // nolint:gocy
309
309
resultLintersSet = lintersToMap (getAllEnabledByDefaultLinters ())
310
310
}
311
311
312
- for _ , name := range lcfg .Enable {
313
- resultLintersSet [name ] = getLinterByName (name )
314
- }
315
-
312
+ // --presets can only add linters to default set
316
313
for _ , p := range lcfg .Presets {
317
314
for _ , linter := range GetAllLintersForPreset (p ) {
318
315
resultLintersSet [linter .Name ()] = linter
319
316
}
320
317
}
321
318
322
- for _ , name := range lcfg .Disable {
323
- delete (resultLintersSet , name )
324
- }
325
-
319
+ // --fast removes slow linters from current set.
320
+ // It should be after --presets to be able to run only fast linters in preset.
321
+ // It should be before --enable and --disable to be able to enable or disable specific linter.
326
322
if lcfg .Fast {
327
323
for name := range resultLintersSet {
328
324
if GetLinterConfig (name ).DoesFullImport {
@@ -331,6 +327,14 @@ func getEnabledLintersSet(cfg *config.Config) map[string]Linter { // nolint:gocy
331
327
}
332
328
}
333
329
330
+ for _ , name := range lcfg .Enable {
331
+ resultLintersSet [name ] = getLinterByName (name )
332
+ }
333
+
334
+ for _ , name := range lcfg .Disable {
335
+ delete (resultLintersSet , name )
336
+ }
337
+
334
338
return resultLintersSet
335
339
}
336
340
@@ -384,6 +388,20 @@ func GetEnabledLinters(cfg *config.Config) ([]Linter, error) {
384
388
return resultLinters , nil
385
389
}
386
390
391
+ func uniqStrings (ss []string ) []string {
392
+ us := map [string ]bool {}
393
+ for _ , s := range ss {
394
+ us [s ] = true
395
+ }
396
+
397
+ var ret []string
398
+ for k := range us {
399
+ ret = append (ret , k )
400
+ }
401
+
402
+ return ret
403
+ }
404
+
387
405
func verbosePrintLintersStatus (cfg * config.Config , linters []Linter ) {
388
406
var linterNames []string
389
407
for _ , linter := range linters {
@@ -392,6 +410,6 @@ func verbosePrintLintersStatus(cfg *config.Config, linters []Linter) {
392
410
logrus .Infof ("Active linters: %s" , linterNames )
393
411
394
412
if len (cfg .Linters .Presets ) != 0 {
395
- logrus .Infof ("Active presets: %s" , cfg .Linters .Presets )
413
+ logrus .Infof ("Active presets: %s" , uniqStrings ( cfg .Linters .Presets ) )
396
414
}
397
415
}
0 commit comments