diff --git a/.golangci.next.reference.yml b/.golangci.next.reference.yml index 0bfc25b51d56..546270df4507 100644 --- a/.golangci.next.reference.yml +++ b/.golangci.next.reference.yml @@ -154,9 +154,9 @@ linters-settings: pop-directional-isolate: false copyloopvar: - # If true, ignore aliasing of loop variables. + # Check all assigning the loop variable to another variable. # Default: false - ignore-alias: true + check-alias: true cyclop: # The maximal code complexity to report. diff --git a/go.mod b/go.mod index 9094904aad2d..766c2e0b01c2 100644 --- a/go.mod +++ b/go.mod @@ -59,7 +59,7 @@ require ( github.com/jirfag/go-printf-func-name v0.0.0-20200119135958-7558a9eaa5af github.com/jjti/go-spancheck v0.5.3 github.com/julz/importas v0.1.0 - github.com/karamaru-alpha/copyloopvar v1.0.10 + github.com/karamaru-alpha/copyloopvar v1.1.0 github.com/kisielk/errcheck v1.7.0 github.com/kkHAIKE/contextcheck v1.1.5 github.com/kulti/thelper v0.6.3 diff --git a/go.sum b/go.sum index 07f727afbaaf..a035cf520d12 100644 --- a/go.sum +++ b/go.sum @@ -318,8 +318,8 @@ github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7V github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= github.com/julz/importas v0.1.0 h1:F78HnrsjY3cR7j0etXy5+TU1Zuy7Xt08X/1aJnH5xXY= github.com/julz/importas v0.1.0/go.mod h1:oSFU2R4XK/P7kNBrnL/FEQlDGN1/6WoxXEjSSXO0DV0= -github.com/karamaru-alpha/copyloopvar v1.0.10 h1:8HYDy6KQYqTmD7JuhZMWS1nwPru9889XI24ROd/+WXI= -github.com/karamaru-alpha/copyloopvar v1.0.10/go.mod h1:u7CIfztblY0jZLOQZgH3oYsJzpC2A7S6u/lfgSXHy0k= +github.com/karamaru-alpha/copyloopvar v1.1.0 h1:x7gNyKcC2vRBO1H2Mks5u1VxQtYvFiym7fCjIP8RPos= +github.com/karamaru-alpha/copyloopvar v1.1.0/go.mod h1:u7CIfztblY0jZLOQZgH3oYsJzpC2A7S6u/lfgSXHy0k= github.com/kisielk/errcheck v1.7.0 h1:+SbscKmWJ5mOK/bO1zS60F5I9WwZDWOfRsC4RwfwRV0= github.com/kisielk/errcheck v1.7.0/go.mod h1:1kLL+jV4e+CFfueBmI1dSK2ADDyQnlrnrY/FqKluHJQ= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= diff --git a/jsonschema/golangci.next.jsonschema.json b/jsonschema/golangci.next.jsonschema.json index 3dda2e35c973..ed1c51cf9a81 100644 --- a/jsonschema/golangci.next.jsonschema.json +++ b/jsonschema/golangci.next.jsonschema.json @@ -3172,7 +3172,7 @@ "type": "object", "additionalProperties": false, "properties": { - "ignore-alias": { + "check-alias": { "type": "boolean", "default": false } diff --git a/pkg/config/linters_settings.go b/pkg/config/linters_settings.go index a50252df602a..b368f4f281c0 100644 --- a/pkg/config/linters_settings.go +++ b/pkg/config/linters_settings.go @@ -315,7 +315,8 @@ type BiDiChkSettings struct { } type CopyLoopVarSettings struct { - IgnoreAlias bool `mapstructure:"ignore-alias"` + IgnoreAlias bool `mapstructure:"ignore-alias"` // Deprecated: use CheckAlias + CheckAlias bool `mapstructure:"check-alias"` } type Cyclop struct { diff --git a/pkg/config/loader.go b/pkg/config/loader.go index e373abd63b9f..eb5044a70b3e 100644 --- a/pkg/config/loader.go +++ b/pkg/config/loader.go @@ -363,6 +363,11 @@ func (l *Loader) handleLinterOptionDeprecations() { "Please enable `shadow` instead, if you are not using `enable-all`.") } + if l.cfg.LintersSettings.CopyLoopVar.IgnoreAlias { + l.log.Warnf("The configuration option `linters.copyloopvar.ignore-alias` is deprecated and ignored," + + "please use `linters.copyloopvar.check-alias`.") + } + // Deprecated since v1.42.0. if l.cfg.LintersSettings.Errcheck.Exclude != "" { l.log.Warnf("The configuration option `linters.errcheck.exclude` is deprecated, please use `linters.errcheck.exclude-functions`.") diff --git a/pkg/golinters/copyloopvar/copyloopvar.go b/pkg/golinters/copyloopvar/copyloopvar.go index 14d0271f248e..adb4ee728465 100644 --- a/pkg/golinters/copyloopvar/copyloopvar.go +++ b/pkg/golinters/copyloopvar/copyloopvar.go @@ -15,7 +15,7 @@ func New(settings *config.CopyLoopVarSettings) *goanalysis.Linter { if settings != nil { cfg = map[string]map[string]any{ a.Name: { - "ignore-alias": settings.IgnoreAlias, + "check-alias": settings.CheckAlias, }, } } diff --git a/pkg/golinters/copyloopvar/testdata/copyloopvar.go b/pkg/golinters/copyloopvar/testdata/copyloopvar.go index b5f1a88423b9..8eac4ce1cfd8 100644 --- a/pkg/golinters/copyloopvar/testdata/copyloopvar.go +++ b/pkg/golinters/copyloopvar/testdata/copyloopvar.go @@ -17,7 +17,7 @@ func copyloopvarCase1() { fns = append(fns, func() { fmt.Println(v) }) - _v := v // want `The copy of the 'for' variable "v" can be deleted \(Go 1\.22\+\)` + _v := v _ = _v } for _, fn := range fns { diff --git a/pkg/golinters/copyloopvar/testdata/copyloopvar.yml b/pkg/golinters/copyloopvar/testdata/copyloopvar.yml index 2c3b5872edc9..284c7396facd 100644 --- a/pkg/golinters/copyloopvar/testdata/copyloopvar.yml +++ b/pkg/golinters/copyloopvar/testdata/copyloopvar.yml @@ -1,3 +1,3 @@ linters-settings: copyloopvar: - ignore-alias: true + check-alias: true diff --git a/pkg/golinters/copyloopvar/testdata/copyloopvar_custom.go b/pkg/golinters/copyloopvar/testdata/copyloopvar_custom.go index a7ee6238768f..618d5b396646 100644 --- a/pkg/golinters/copyloopvar/testdata/copyloopvar_custom.go +++ b/pkg/golinters/copyloopvar/testdata/copyloopvar_custom.go @@ -18,7 +18,7 @@ func copyloopvarCase1() { fns = append(fns, func() { fmt.Println(v) }) - _v := v + _v := v // want `The copy of the 'for' variable "v" can be deleted \(Go 1\.22\+\)` _ = _v } for _, fn := range fns {