Upgrading to go-critic v0.5.0 (#1205)
Some checks failed
CI / golangci-lint (push) Failing after 3m54s
CI / tests-on-windows (push) Has been skipped
CI / tests-on-unix (1.13, ubuntu-latest) (push) Has been skipped
CI / tests-on-unix (1.14, ubuntu-latest) (push) Has been skipped
CI / check_generated (push) Has been skipped
Release a tag / release (push) Failing after 4m22s
Some checks failed
CI / golangci-lint (push) Failing after 3m54s
CI / tests-on-windows (push) Has been skipped
CI / tests-on-unix (1.13, ubuntu-latest) (push) Has been skipped
CI / tests-on-unix (1.14, ubuntu-latest) (push) Has been skipped
CI / check_generated (push) Has been skipped
Release a tag / release (push) Failing after 4m22s
This commit is contained in:
parent
01b566a646
commit
306cbb0e6e
3
go.mod
3
go.mod
@ -8,8 +8,7 @@ require (
|
|||||||
github.com/bombsimon/wsl/v3 v3.1.0
|
github.com/bombsimon/wsl/v3 v3.1.0
|
||||||
github.com/denis-tingajkin/go-header v0.3.1
|
github.com/denis-tingajkin/go-header v0.3.1
|
||||||
github.com/fatih/color v1.9.0
|
github.com/fatih/color v1.9.0
|
||||||
github.com/go-critic/go-critic v0.4.3
|
github.com/go-critic/go-critic v0.5.0
|
||||||
github.com/go-lintpack/lintpack v0.5.2
|
|
||||||
github.com/go-xmlfmt/xmlfmt v0.0.0-20191208150333-d5b6f63a941b
|
github.com/go-xmlfmt/xmlfmt v0.0.0-20191208150333-d5b6f63a941b
|
||||||
github.com/gofrs/flock v0.7.1
|
github.com/gofrs/flock v0.7.1
|
||||||
github.com/golangci/check v0.0.0-20180506172741-cfe4005ccda2
|
github.com/golangci/check v0.0.0-20180506172741-cfe4005ccda2
|
||||||
|
8
go.sum
8
go.sum
@ -60,8 +60,8 @@ github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL
|
|||||||
github.com/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV9I=
|
github.com/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV9I=
|
||||||
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
|
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
|
||||||
github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
|
github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
|
||||||
github.com/go-critic/go-critic v0.4.3 h1:sGEEdiuvLV0OC7/yC6MnK3K6LCPBplspK45B0XVdFAc=
|
github.com/go-critic/go-critic v0.5.0 h1:Ic2p5UCl5fX/2WX2w8nroPpPhxRNsNTMlJzsu/uqwnM=
|
||||||
github.com/go-critic/go-critic v0.4.3/go.mod h1:j4O3D4RoIwRqlZw5jJpx0BNfXWWbpcJoKu5cYSe4YmQ=
|
github.com/go-critic/go-critic v0.5.0/go.mod h1:4jeRh3ZAVnRYhuWdOEvwzVqLUpxMSoAT0xZ74JsTPlo=
|
||||||
github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU=
|
github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU=
|
||||||
github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as=
|
github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as=
|
||||||
github.com/go-lintpack/lintpack v0.5.2 h1:DI5mA3+eKdWeJ40nU4d6Wc26qmdG8RCi/btYq0TuRN0=
|
github.com/go-lintpack/lintpack v0.5.2 h1:DI5mA3+eKdWeJ40nU4d6Wc26qmdG8RCi/btYq0TuRN0=
|
||||||
@ -95,6 +95,8 @@ github.com/go-toolsmith/strparse v1.0.0 h1:Vcw78DnpCAKlM20kSbAyO4mPfJn/lyYA4BJUD
|
|||||||
github.com/go-toolsmith/strparse v1.0.0/go.mod h1:YI2nUKP9YGZnL/L1/DLFBfixrcjslWct4wyljWhSRy8=
|
github.com/go-toolsmith/strparse v1.0.0/go.mod h1:YI2nUKP9YGZnL/L1/DLFBfixrcjslWct4wyljWhSRy8=
|
||||||
github.com/go-toolsmith/typep v1.0.0 h1:zKymWyA1TRYvqYrYDrfEMZULyrhcnGY3x7LDKU2XQaA=
|
github.com/go-toolsmith/typep v1.0.0 h1:zKymWyA1TRYvqYrYDrfEMZULyrhcnGY3x7LDKU2XQaA=
|
||||||
github.com/go-toolsmith/typep v1.0.0/go.mod h1:JSQCQMUPdRlMZFswiq3TGpNp1GMktqkR2Ns5AIQkATU=
|
github.com/go-toolsmith/typep v1.0.0/go.mod h1:JSQCQMUPdRlMZFswiq3TGpNp1GMktqkR2Ns5AIQkATU=
|
||||||
|
github.com/go-toolsmith/typep v1.0.2 h1:8xdsa1+FSIH/RhEkgnD1j2CJOy5mNllW1Q9tRiYwvlk=
|
||||||
|
github.com/go-toolsmith/typep v1.0.2/go.mod h1:JSQCQMUPdRlMZFswiq3TGpNp1GMktqkR2Ns5AIQkATU=
|
||||||
github.com/go-xmlfmt/xmlfmt v0.0.0-20191208150333-d5b6f63a941b h1:khEcpUM4yFcxg4/FHQWkvVRmgijNXRfzkIDHh23ggEo=
|
github.com/go-xmlfmt/xmlfmt v0.0.0-20191208150333-d5b6f63a941b h1:khEcpUM4yFcxg4/FHQWkvVRmgijNXRfzkIDHh23ggEo=
|
||||||
github.com/go-xmlfmt/xmlfmt v0.0.0-20191208150333-d5b6f63a941b/go.mod h1:aUCEOzzezBEjDBbFBoSiya/gduyIiWYRP6CnSFIV8AM=
|
github.com/go-xmlfmt/xmlfmt v0.0.0-20191208150333-d5b6f63a941b/go.mod h1:aUCEOzzezBEjDBbFBoSiya/gduyIiWYRP6CnSFIV8AM=
|
||||||
github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y=
|
github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y=
|
||||||
@ -312,6 +314,8 @@ github.com/quasilyte/go-consistent v0.0.0-20190521200055-c6f3937de18c h1:JoUA0uz
|
|||||||
github.com/quasilyte/go-consistent v0.0.0-20190521200055-c6f3937de18c/go.mod h1:5STLWrekHfjyYwxBRVRXNOSewLJ3PWfDJd1VyTS21fI=
|
github.com/quasilyte/go-consistent v0.0.0-20190521200055-c6f3937de18c/go.mod h1:5STLWrekHfjyYwxBRVRXNOSewLJ3PWfDJd1VyTS21fI=
|
||||||
github.com/quasilyte/go-ruleguard v0.1.2-0.20200318202121-b00d7a75d3d8 h1:DvnesvLtRPQOvaUbfXfh0tpMHg29by0H7F2U+QIkSu8=
|
github.com/quasilyte/go-ruleguard v0.1.2-0.20200318202121-b00d7a75d3d8 h1:DvnesvLtRPQOvaUbfXfh0tpMHg29by0H7F2U+QIkSu8=
|
||||||
github.com/quasilyte/go-ruleguard v0.1.2-0.20200318202121-b00d7a75d3d8/go.mod h1:CGFX09Ci3pq9QZdj86B+VGIdNj4VyCo2iPOGS9esB/k=
|
github.com/quasilyte/go-ruleguard v0.1.2-0.20200318202121-b00d7a75d3d8/go.mod h1:CGFX09Ci3pq9QZdj86B+VGIdNj4VyCo2iPOGS9esB/k=
|
||||||
|
github.com/quasilyte/regex/syntax v0.0.0-20200407221936-30656e2c4a95 h1:L8QM9bvf68pVdQ3bCFZMDmnt9yqcMBro1pC7F+IPYMY=
|
||||||
|
github.com/quasilyte/regex/syntax v0.0.0-20200407221936-30656e2c4a95/go.mod h1:rlzQ04UMyJXu/aOvhd8qT+hvDrFpiwqp8MRXDY9szc0=
|
||||||
github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg=
|
github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg=
|
||||||
github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
|
github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
|
||||||
github.com/rogpeppe/go-internal v1.5.2/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc=
|
github.com/rogpeppe/go-internal v1.5.2/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc=
|
||||||
|
@ -5,7 +5,7 @@ import (
|
|||||||
"sort"
|
"sort"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/go-lintpack/lintpack"
|
"github.com/go-critic/go-critic/framework/linter"
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
|
|
||||||
_ "github.com/go-critic/go-critic/checkers" // this import register checkers
|
_ "github.com/go-critic/go-critic/checkers" // this import register checkers
|
||||||
@ -18,9 +18,9 @@ const gocriticDebugKey = "gocritic"
|
|||||||
var (
|
var (
|
||||||
gocriticDebugf = logutils.Debug(gocriticDebugKey)
|
gocriticDebugf = logutils.Debug(gocriticDebugKey)
|
||||||
isGocriticDebug = logutils.HaveDebugTag(gocriticDebugKey)
|
isGocriticDebug = logutils.HaveDebugTag(gocriticDebugKey)
|
||||||
allGocriticCheckers = lintpack.GetCheckersInfo()
|
allGocriticCheckers = linter.GetCheckersInfo()
|
||||||
allGocriticCheckerMap = func() map[string]*lintpack.CheckerInfo {
|
allGocriticCheckerMap = func() map[string]*linter.CheckerInfo {
|
||||||
checkInfoMap := make(map[string]*lintpack.CheckerInfo)
|
checkInfoMap := make(map[string]*linter.CheckerInfo)
|
||||||
for _, checkInfo := range allGocriticCheckers {
|
for _, checkInfo := range allGocriticCheckers {
|
||||||
checkInfoMap[checkInfo.Name] = checkInfo
|
checkInfoMap[checkInfo.Name] = checkInfo
|
||||||
}
|
}
|
||||||
@ -281,7 +281,7 @@ func getAllCheckerNames() map[string]bool {
|
|||||||
return allCheckerNames
|
return allCheckerNames
|
||||||
}
|
}
|
||||||
|
|
||||||
func isEnabledByDefaultGocriticCheck(info *lintpack.CheckerInfo) bool {
|
func isEnabledByDefaultGocriticCheck(info *linter.CheckerInfo) bool {
|
||||||
return !info.HasTag("experimental") &&
|
return !info.HasTag("experimental") &&
|
||||||
!info.HasTag("opinionated") &&
|
!info.HasTag("opinionated") &&
|
||||||
!info.HasTag("performance")
|
!info.HasTag("performance")
|
||||||
@ -290,9 +290,6 @@ func isEnabledByDefaultGocriticCheck(info *lintpack.CheckerInfo) bool {
|
|||||||
func getDefaultEnabledGocriticCheckersNames() []string {
|
func getDefaultEnabledGocriticCheckersNames() []string {
|
||||||
var enabled []string
|
var enabled []string
|
||||||
for _, info := range allGocriticCheckers {
|
for _, info := range allGocriticCheckers {
|
||||||
// get in sync with lintpack behavior in bindDefaultEnabledList
|
|
||||||
// in https://github.com/go-lintpack/lintpack/blob/master/linter/lintmain/internal/check/check.go#L317
|
|
||||||
|
|
||||||
enable := isEnabledByDefaultGocriticCheck(info)
|
enable := isEnabledByDefaultGocriticCheck(info)
|
||||||
if enable {
|
if enable {
|
||||||
enabled = append(enabled, info.Name)
|
enabled = append(enabled, info.Name)
|
||||||
@ -305,9 +302,6 @@ func getDefaultEnabledGocriticCheckersNames() []string {
|
|||||||
func getDefaultDisabledGocriticCheckersNames() []string {
|
func getDefaultDisabledGocriticCheckersNames() []string {
|
||||||
var disabled []string
|
var disabled []string
|
||||||
for _, info := range allGocriticCheckers {
|
for _, info := range allGocriticCheckers {
|
||||||
// get in sync with lintpack behavior in bindDefaultEnabledList
|
|
||||||
// in https://github.com/go-lintpack/lintpack/blob/master/linter/lintmain/internal/check/check.go#L317
|
|
||||||
|
|
||||||
enable := isEnabledByDefaultGocriticCheck(info)
|
enable := isEnabledByDefaultGocriticCheck(info)
|
||||||
if !enable {
|
if !enable {
|
||||||
disabled = append(disabled, info.Name)
|
disabled = append(disabled, info.Name)
|
||||||
|
@ -10,7 +10,7 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"sync"
|
"sync"
|
||||||
|
|
||||||
"github.com/go-lintpack/lintpack"
|
gocriticlinter "github.com/go-critic/go-critic/framework/linter"
|
||||||
"golang.org/x/tools/go/analysis"
|
"golang.org/x/tools/go/analysis"
|
||||||
|
|
||||||
"github.com/golangci/golangci-lint/pkg/config"
|
"github.com/golangci/golangci-lint/pkg/config"
|
||||||
@ -38,15 +38,15 @@ func NewGocritic() *goanalysis.Linter {
|
|||||||
nil,
|
nil,
|
||||||
).WithContextSetter(func(lintCtx *linter.Context) {
|
).WithContextSetter(func(lintCtx *linter.Context) {
|
||||||
analyzer.Run = func(pass *analysis.Pass) (interface{}, error) {
|
analyzer.Run = func(pass *analysis.Pass) (interface{}, error) {
|
||||||
lintpackCtx := lintpack.NewContext(pass.Fset, sizes)
|
linterCtx := gocriticlinter.NewContext(pass.Fset, sizes)
|
||||||
enabledCheckers, err := buildEnabledCheckers(lintCtx, lintpackCtx)
|
enabledCheckers, err := buildEnabledCheckers(lintCtx, linterCtx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
lintpackCtx.SetPackageInfo(pass.TypesInfo, pass.Pkg)
|
linterCtx.SetPackageInfo(pass.TypesInfo, pass.Pkg)
|
||||||
var res []goanalysis.Issue
|
var res []goanalysis.Issue
|
||||||
pkgIssues := runGocriticOnPackage(lintpackCtx, enabledCheckers, pass.Files)
|
pkgIssues := runGocriticOnPackage(linterCtx, enabledCheckers, pass.Files)
|
||||||
for i := range pkgIssues {
|
for i := range pkgIssues {
|
||||||
res = append(res, goanalysis.NewIssue(&pkgIssues[i], pass))
|
res = append(res, goanalysis.NewIssue(&pkgIssues[i], pass))
|
||||||
}
|
}
|
||||||
@ -65,9 +65,9 @@ func NewGocritic() *goanalysis.Linter {
|
|||||||
}).WithLoadMode(goanalysis.LoadModeTypesInfo)
|
}).WithLoadMode(goanalysis.LoadModeTypesInfo)
|
||||||
}
|
}
|
||||||
|
|
||||||
func normalizeCheckerInfoParams(info *lintpack.CheckerInfo) lintpack.CheckerParams {
|
func normalizeCheckerInfoParams(info *gocriticlinter.CheckerInfo) gocriticlinter.CheckerParams {
|
||||||
// lowercase info param keys here because golangci-lint's config parser lowercases all strings
|
// lowercase info param keys here because golangci-lint's config parser lowercases all strings
|
||||||
ret := lintpack.CheckerParams{}
|
ret := gocriticlinter.CheckerParams{}
|
||||||
for k, v := range info.Params {
|
for k, v := range info.Params {
|
||||||
ret[strings.ToLower(k)] = v
|
ret[strings.ToLower(k)] = v
|
||||||
}
|
}
|
||||||
@ -75,7 +75,7 @@ func normalizeCheckerInfoParams(info *lintpack.CheckerInfo) lintpack.CheckerPara
|
|||||||
return ret
|
return ret
|
||||||
}
|
}
|
||||||
|
|
||||||
func configureCheckerInfo(info *lintpack.CheckerInfo, allParams map[string]config.GocriticCheckSettings) error {
|
func configureCheckerInfo(info *gocriticlinter.CheckerInfo, allParams map[string]config.GocriticCheckSettings) error {
|
||||||
params := allParams[strings.ToLower(info.Name)]
|
params := allParams[strings.ToLower(info.Name)]
|
||||||
if params == nil { // no config for this checker
|
if params == nil { // no config for this checker
|
||||||
return nil
|
return nil
|
||||||
@ -108,12 +108,12 @@ func configureCheckerInfo(info *lintpack.CheckerInfo, allParams map[string]confi
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func buildEnabledCheckers(lintCtx *linter.Context, lintpackCtx *lintpack.Context) ([]*lintpack.Checker, error) {
|
func buildEnabledCheckers(lintCtx *linter.Context, linterCtx *gocriticlinter.Context) ([]*gocriticlinter.Checker, error) {
|
||||||
s := lintCtx.Settings().Gocritic
|
s := lintCtx.Settings().Gocritic
|
||||||
allParams := s.GetLowercasedParams()
|
allParams := s.GetLowercasedParams()
|
||||||
|
|
||||||
var enabledCheckers []*lintpack.Checker
|
var enabledCheckers []*gocriticlinter.Checker
|
||||||
for _, info := range lintpack.GetCheckersInfo() {
|
for _, info := range gocriticlinter.GetCheckersInfo() {
|
||||||
if !s.IsCheckEnabled(info.Name) {
|
if !s.IsCheckEnabled(info.Name) {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
@ -122,27 +122,27 @@ func buildEnabledCheckers(lintCtx *linter.Context, lintpackCtx *lintpack.Context
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
c := lintpack.NewChecker(lintpackCtx, info)
|
c := gocriticlinter.NewChecker(linterCtx, info)
|
||||||
enabledCheckers = append(enabledCheckers, c)
|
enabledCheckers = append(enabledCheckers, c)
|
||||||
}
|
}
|
||||||
|
|
||||||
return enabledCheckers, nil
|
return enabledCheckers, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func runGocriticOnPackage(lintpackCtx *lintpack.Context, checkers []*lintpack.Checker,
|
func runGocriticOnPackage(linterCtx *gocriticlinter.Context, checkers []*gocriticlinter.Checker,
|
||||||
files []*ast.File) []result.Issue {
|
files []*ast.File) []result.Issue {
|
||||||
var res []result.Issue
|
var res []result.Issue
|
||||||
for _, f := range files {
|
for _, f := range files {
|
||||||
filename := filepath.Base(lintpackCtx.FileSet.Position(f.Pos()).Filename)
|
filename := filepath.Base(linterCtx.FileSet.Position(f.Pos()).Filename)
|
||||||
lintpackCtx.SetFileInfo(filename, f)
|
linterCtx.SetFileInfo(filename, f)
|
||||||
|
|
||||||
issues := runGocriticOnFile(lintpackCtx, f, checkers)
|
issues := runGocriticOnFile(linterCtx, f, checkers)
|
||||||
res = append(res, issues...)
|
res = append(res, issues...)
|
||||||
}
|
}
|
||||||
return res
|
return res
|
||||||
}
|
}
|
||||||
|
|
||||||
func runGocriticOnFile(ctx *lintpack.Context, f *ast.File, checkers []*lintpack.Checker) []result.Issue {
|
func runGocriticOnFile(ctx *gocriticlinter.Context, f *ast.File, checkers []*gocriticlinter.Checker) []result.Issue {
|
||||||
var res []result.Issue
|
var res []result.Issue
|
||||||
|
|
||||||
for _, c := range checkers {
|
for _, c := range checkers {
|
||||||
|
@ -156,7 +156,7 @@ var (
|
|||||||
errRx = regexp.MustCompile(`// (?:GC_)?ERROR (.*)`)
|
errRx = regexp.MustCompile(`// (?:GC_)?ERROR (.*)`)
|
||||||
errAutoRx = regexp.MustCompile(`// (?:GC_)?ERRORAUTO (.*)`)
|
errAutoRx = regexp.MustCompile(`// (?:GC_)?ERRORAUTO (.*)`)
|
||||||
errQuotesRx = regexp.MustCompile(`"([^"]*)"`)
|
errQuotesRx = regexp.MustCompile(`"([^"]*)"`)
|
||||||
lineRx = regexp.MustCompile(`LINE(([+-])([0-9]+))?`)
|
lineRx = regexp.MustCompile(`LINE(([+-])(\d+))?`)
|
||||||
)
|
)
|
||||||
|
|
||||||
// wantedErrors parses expected errors from comments in a file.
|
// wantedErrors parses expected errors from comments in a file.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user