Skip to content

Commit 421db27

Browse files
committed
review
1 parent b19d51c commit 421db27

File tree

3 files changed

+29
-14
lines changed

3 files changed

+29
-14
lines changed

.golangci.reference.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,10 @@ run:
8484
# Default: use Go version from the go.mod file, fallback on the env var `GOVERSION`, fallback on 1.17
8585
go: '1.19'
8686

87+
# Show statistics per linter.
88+
# Default: false
89+
show-stats: true
90+
8791

8892
# output configuration options
8993
output:

pkg/commands/run.go

Lines changed: 24 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,14 @@ import (
88
"log"
99
"os"
1010
"runtime"
11+
"sort"
1112
"strings"
1213
"time"
1314

1415
"github.com/fatih/color"
1516
"github.com/spf13/cobra"
1617
"github.com/spf13/pflag"
18+
"golang.org/x/exp/maps"
1719

1820
"github.com/golangci/golangci-lint/pkg/config"
1921
"github.com/golangci/golangci-lint/pkg/exitcodes"
@@ -125,7 +127,7 @@ func initFlagSet(fs *pflag.FlagSet, cfg *config.Config, m *lintersdb.Manager, is
125127
const allowSerialDesc = "Allow multiple golangci-lint instances running, but serialize them around a lock. " +
126128
"If false (default) - golangci-lint exits with an error if it fails to acquire file lock on start."
127129
fs.BoolVar(&rc.AllowSerialRunners, "allow-serial-runners", false, wh(allowSerialDesc))
128-
fs.BoolVar(&rc.ShowStatsPerLinter, "show-stats-per-linter", false, wh("Show stats per linter"))
130+
fs.BoolVar(&rc.ShowStats, "show-stats", false, wh("Show statistics per linter"))
129131

130132
// Linters settings config
131133
lsc := &cfg.LintersSettings
@@ -493,18 +495,27 @@ func (e *Executor) createPrinter(format string, w io.Writer) (printers.Printer,
493495
}
494496

495497
func (e *Executor) printStats(issues []result.Issue) {
496-
if e.cfg.Run.ShowStatsPerLinter {
497-
stats := map[string]int{}
498-
for idx := range issues {
499-
stats[issues[idx].FromLinter]++
500-
}
501-
e.runCmd.Println("Stats per linter:")
502-
for linter, count := range stats {
503-
e.runCmd.Printf(" %s: %d\n", linter, count)
504-
}
505-
if len(stats) == 0 {
506-
e.runCmd.Println(" no issues")
507-
}
498+
if !e.cfg.Run.ShowStats {
499+
return
500+
}
501+
502+
if len(issues) == 0 {
503+
e.runCmd.Println("0 report")
504+
return
505+
}
506+
507+
stats := map[string]int{}
508+
for idx := range issues {
509+
stats[issues[idx].FromLinter]++
510+
}
511+
512+
e.runCmd.Printf("%d reports:\n", len(issues))
513+
514+
keys := maps.Keys(stats)
515+
sort.Strings(keys)
516+
517+
for _, key := range keys {
518+
e.runCmd.Printf("* %s: %d\n", key, stats[key])
508519
}
509520
}
510521

pkg/config/run.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,5 +38,5 @@ type Run struct {
3838
AllowParallelRunners bool `mapstructure:"allow-parallel-runners"`
3939
AllowSerialRunners bool `mapstructure:"allow-serial-runners"`
4040

41-
ShowStatsPerLinter bool `mapstructure:"show-stats-per-linter"`
41+
ShowStats bool `mapstructure:"show-stats"`
4242
}

0 commit comments

Comments
 (0)