
Run all linters per package. It allows unloading package data when it's processed. It dramatically reduces memory (and CPU because of GC) usage. Relates: #337
31 lines
639 B
Go
31 lines
639 B
Go
package golinters
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/golangci/golangci-lint/pkg/logutils"
|
|
|
|
"golang.org/x/tools/go/analysis"
|
|
)
|
|
|
|
var debugf = logutils.Debug("megacheck")
|
|
|
|
func analyzersMapToSlice(m map[string]*analysis.Analyzer) []*analysis.Analyzer {
|
|
var ret []*analysis.Analyzer
|
|
for _, v := range m {
|
|
ret = append(ret, v)
|
|
}
|
|
return ret
|
|
}
|
|
|
|
func setAnalyzersGoVersion(analyzers []*analysis.Analyzer) {
|
|
const goVersion = 13 // TODO
|
|
for _, a := range analyzers {
|
|
if v := a.Flags.Lookup("go"); v != nil {
|
|
if err := v.Value.Set(fmt.Sprintf("1.%d", goVersion)); err != nil {
|
|
debugf("Failed to set go version: %s", err)
|
|
}
|
|
}
|
|
}
|
|
}
|