From 538e1ea985bec7acbabf8f4ae2bc7bf93de3692b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 16 Jan 2025 23:54:29 +0000 Subject: [PATCH 1/6] build(deps): bump github.com/Crocmagnon/fatcontext from 0.6.0 to 0.7.1 Bumps [github.com/Crocmagnon/fatcontext](https://github.com/Crocmagnon/fatcontext) from 0.6.0 to 0.7.1. - [Release notes](https://github.com/Crocmagnon/fatcontext/releases) - [Changelog](https://github.com/Crocmagnon/fatcontext/blob/master/.goreleaser.yaml) - [Commits](https://github.com/Crocmagnon/fatcontext/compare/v0.6.0...v0.7.1) --- updated-dependencies: - dependency-name: github.com/Crocmagnon/fatcontext dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- go.mod | 2 +- go.sum | 9 ++------- 2 files changed, 3 insertions(+), 8 deletions(-) diff --git a/go.mod b/go.mod index 9f91e090929e..feb3503511ab 100644 --- a/go.mod +++ b/go.mod @@ -11,7 +11,7 @@ require ( github.com/Antonboom/nilnil v1.0.1 github.com/Antonboom/testifylint v1.5.2 github.com/BurntSushi/toml v1.4.1-0.20240526193622-a339e1f7089c - github.com/Crocmagnon/fatcontext v0.6.0 + github.com/Crocmagnon/fatcontext v0.7.1 github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24 github.com/GaijinEntertainment/go-exhaustruct/v3 v3.3.0 github.com/OpenPeeDeeP/depguard/v2 v2.2.0 diff --git a/go.sum b/go.sum index 5f5c064cd02b..68759207aec2 100644 --- a/go.sum +++ b/go.sum @@ -49,8 +49,8 @@ github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03 github.com/BurntSushi/toml v1.4.1-0.20240526193622-a339e1f7089c h1:pxW6RcqyfI9/kWtOwnv/G+AzdKuy2ZrqINhenH4HyNs= github.com/BurntSushi/toml v1.4.1-0.20240526193622-a339e1f7089c/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= -github.com/Crocmagnon/fatcontext v0.6.0 h1:DxGYfrUrJBOtvldiWpMvntvkTDgj6c1zLCTKelMqAtw= -github.com/Crocmagnon/fatcontext v0.6.0/go.mod h1:1wMvv3NXEBJucFGfwOJBxSVWcoIO6emV215SMkW9MFU= +github.com/Crocmagnon/fatcontext v0.7.1 h1:SC/VIbRRZQeQWj/TcQBS6JmrXcfA+BU4OGSVUt54PjM= +github.com/Crocmagnon/fatcontext v0.7.1/go.mod h1:1wMvv3NXEBJucFGfwOJBxSVWcoIO6emV215SMkW9MFU= github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24 h1:sHglBQTwgx+rWPdisA5ynNEsoARbiCBOyGcJM4/OzsM= github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24/go.mod h1:4UJr5HIiMZrwgkSPdsjy2uOQExX/WEILpIrO9UPGuXs= github.com/GaijinEntertainment/go-exhaustruct/v3 v3.3.0 h1:/fTUt5vmbkAcMBt4YQiuC23cV0kEsN1MVMNqeOW43cU= @@ -290,7 +290,6 @@ github.com/gostaticanalysis/nilerr v0.1.1 h1:ThE+hJP0fEp4zWLkWHWcRyI2Od0p7DlgYG3 github.com/gostaticanalysis/nilerr v0.1.1/go.mod h1:wZYb6YI5YAxxq0i1+VJbY0s2YONW0HU0GPE3+5PWN4A= github.com/gostaticanalysis/testutil v0.3.1-0.20210208050101-bfb5c8eec0e4/go.mod h1:D+FIZ+7OahH3ePw/izIEeH5I06eKs1IKI4Xr64/Am3M= github.com/gostaticanalysis/testutil v0.5.0 h1:Dq4wT1DdTwTGCQQv3rl3IvD5Ld0E6HiY+3Zh0sUGqw8= -github.com/gostaticanalysis/testutil v0.5.0/go.mod h1:OLQSbuM6zw2EvCcXTz1lVq5unyoNft372msDY0nY5Hs= github.com/hashicorp/go-immutable-radix/v2 v2.1.0 h1:CUW5RYIcysz+D3B+l1mDeXrQ7fUvGGCwJfdASSzbrfo= github.com/hashicorp/go-immutable-radix/v2 v2.1.0/go.mod h1:hgdqLXA4f6NIjRVisM1TJ9aOJVNRqKZj+xDGF6m7PBw= github.com/hashicorp/go-uuid v1.0.3 h1:2gKiV6YVmrJ1i2CKKa9obLvRieoRGviZFL26PcT/Co8= @@ -416,8 +415,6 @@ github.com/onsi/ginkgo/v2 v2.22.2/go.mod h1:oeMosUL+8LtarXBHu/c0bx2D/K9zyQ6uX3cT github.com/onsi/gomega v1.36.2 h1:koNYke6TVk6ZmnyHrCXba/T/MoLBXFjeC1PtvYgw0A8= github.com/onsi/gomega v1.36.2/go.mod h1:DdwyADRjrc825LhMEkD76cHR5+pUnjhUN8GlHlRPHzY= github.com/otiai10/copy v1.2.0/go.mod h1:rrF5dJ5F0t/EWSYODDu4j9/vEeYHMkc8jt0zJChqQWw= -github.com/otiai10/copy v1.14.0 h1:dCI/t1iTdYGtkvCuBG2BgR6KZa83PTclw4U5n2wAllU= -github.com/otiai10/copy v1.14.0/go.mod h1:ECfuL02W+/FkTWZWgQqXPWZgW9oeKCSQ5qVfSc4qc4w= github.com/otiai10/curr v0.0.0-20150429015615-9b4961190c95/go.mod h1:9qAhocn7zKJG+0mI8eUu6xqkFDYS2kb2saOteoSB3cE= github.com/otiai10/curr v1.0.0/go.mod h1:LskTG5wDwr8Rs+nNQ+1LlxRjAtTZZjtJW4rMXl6j4vs= github.com/otiai10/mint v1.3.0/go.mod h1:F5AjcsTsWUqX+Na9fpHb52P8pcRX2CI6A3ctIT91xUo= @@ -546,9 +543,7 @@ github.com/subosito/gotenv v1.4.1 h1:jyEFiXpy21Wm81FBN71l9VoMMV8H8jG+qIK3GCpY6Qs github.com/subosito/gotenv v1.4.1/go.mod h1:ayKnFf/c6rvx/2iiLrJUk1e6plDbT3edrFNGqEflhK0= github.com/tdakkota/asciicheck v0.3.0 h1:LqDGgZdholxZMaJgpM6b0U9CFIjDCbFdUF00bDnBKOQ= github.com/tdakkota/asciicheck v0.3.0/go.mod h1:KoJKXuX/Z/lt6XzLo8WMBfQGzak0SrAKZlvRr4tg8Ac= -github.com/tenntenn/modver v1.0.1 h1:2klLppGhDgzJrScMpkj9Ujy3rXPUspSjAcev9tSEBgA= github.com/tenntenn/modver v1.0.1/go.mod h1:bePIyQPb7UeioSRkw3Q0XeMhYZSMx9B8ePqg6SAMGH0= -github.com/tenntenn/text/transform v0.0.0-20200319021203-7eef512accb3 h1:f+jULpRQGxTSkNYKJ51yaw6ChIqO+Je8UqsTKN/cDag= github.com/tenntenn/text/transform v0.0.0-20200319021203-7eef512accb3/go.mod h1:ON8b8w4BN/kE1EOhwT0o+d62W65a6aPw1nouo9LMgyY= github.com/tetafro/godot v1.4.20 h1:z/p8Ek55UdNvzt4TFn2zx2KscpW4rWqcnUrdmvWJj7E= github.com/tetafro/godot v1.4.20/go.mod h1:2oVxTBSftRTh4+MVfUaUXR6bn2GDXCaMcOG4Dk3rfio= From 4c81866d674ee3a7c1ab22bae49efb2d9fa78b9f Mon Sep 17 00:00:00 2001 From: Fernandez Ludovic Date: Fri, 17 Jan 2025 00:56:18 +0100 Subject: [PATCH 2/6] chore: fix go.sum --- go.sum | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/go.sum b/go.sum index 68759207aec2..373abad47063 100644 --- a/go.sum +++ b/go.sum @@ -290,6 +290,7 @@ github.com/gostaticanalysis/nilerr v0.1.1 h1:ThE+hJP0fEp4zWLkWHWcRyI2Od0p7DlgYG3 github.com/gostaticanalysis/nilerr v0.1.1/go.mod h1:wZYb6YI5YAxxq0i1+VJbY0s2YONW0HU0GPE3+5PWN4A= github.com/gostaticanalysis/testutil v0.3.1-0.20210208050101-bfb5c8eec0e4/go.mod h1:D+FIZ+7OahH3ePw/izIEeH5I06eKs1IKI4Xr64/Am3M= github.com/gostaticanalysis/testutil v0.5.0 h1:Dq4wT1DdTwTGCQQv3rl3IvD5Ld0E6HiY+3Zh0sUGqw8= +github.com/gostaticanalysis/testutil v0.5.0/go.mod h1:OLQSbuM6zw2EvCcXTz1lVq5unyoNft372msDY0nY5Hs= github.com/hashicorp/go-immutable-radix/v2 v2.1.0 h1:CUW5RYIcysz+D3B+l1mDeXrQ7fUvGGCwJfdASSzbrfo= github.com/hashicorp/go-immutable-radix/v2 v2.1.0/go.mod h1:hgdqLXA4f6NIjRVisM1TJ9aOJVNRqKZj+xDGF6m7PBw= github.com/hashicorp/go-uuid v1.0.3 h1:2gKiV6YVmrJ1i2CKKa9obLvRieoRGviZFL26PcT/Co8= @@ -415,6 +416,8 @@ github.com/onsi/ginkgo/v2 v2.22.2/go.mod h1:oeMosUL+8LtarXBHu/c0bx2D/K9zyQ6uX3cT github.com/onsi/gomega v1.36.2 h1:koNYke6TVk6ZmnyHrCXba/T/MoLBXFjeC1PtvYgw0A8= github.com/onsi/gomega v1.36.2/go.mod h1:DdwyADRjrc825LhMEkD76cHR5+pUnjhUN8GlHlRPHzY= github.com/otiai10/copy v1.2.0/go.mod h1:rrF5dJ5F0t/EWSYODDu4j9/vEeYHMkc8jt0zJChqQWw= +github.com/otiai10/copy v1.14.0 h1:dCI/t1iTdYGtkvCuBG2BgR6KZa83PTclw4U5n2wAllU= +github.com/otiai10/copy v1.14.0/go.mod h1:ECfuL02W+/FkTWZWgQqXPWZgW9oeKCSQ5qVfSc4qc4w= github.com/otiai10/curr v0.0.0-20150429015615-9b4961190c95/go.mod h1:9qAhocn7zKJG+0mI8eUu6xqkFDYS2kb2saOteoSB3cE= github.com/otiai10/curr v1.0.0/go.mod h1:LskTG5wDwr8Rs+nNQ+1LlxRjAtTZZjtJW4rMXl6j4vs= github.com/otiai10/mint v1.3.0/go.mod h1:F5AjcsTsWUqX+Na9fpHb52P8pcRX2CI6A3ctIT91xUo= @@ -543,7 +546,9 @@ github.com/subosito/gotenv v1.4.1 h1:jyEFiXpy21Wm81FBN71l9VoMMV8H8jG+qIK3GCpY6Qs github.com/subosito/gotenv v1.4.1/go.mod h1:ayKnFf/c6rvx/2iiLrJUk1e6plDbT3edrFNGqEflhK0= github.com/tdakkota/asciicheck v0.3.0 h1:LqDGgZdholxZMaJgpM6b0U9CFIjDCbFdUF00bDnBKOQ= github.com/tdakkota/asciicheck v0.3.0/go.mod h1:KoJKXuX/Z/lt6XzLo8WMBfQGzak0SrAKZlvRr4tg8Ac= +github.com/tenntenn/modver v1.0.1 h1:2klLppGhDgzJrScMpkj9Ujy3rXPUspSjAcev9tSEBgA= github.com/tenntenn/modver v1.0.1/go.mod h1:bePIyQPb7UeioSRkw3Q0XeMhYZSMx9B8ePqg6SAMGH0= +github.com/tenntenn/text/transform v0.0.0-20200319021203-7eef512accb3 h1:f+jULpRQGxTSkNYKJ51yaw6ChIqO+Je8UqsTKN/cDag= github.com/tenntenn/text/transform v0.0.0-20200319021203-7eef512accb3/go.mod h1:ON8b8w4BN/kE1EOhwT0o+d62W65a6aPw1nouo9LMgyY= github.com/tetafro/godot v1.4.20 h1:z/p8Ek55UdNvzt4TFn2zx2KscpW4rWqcnUrdmvWJj7E= github.com/tetafro/godot v1.4.20/go.mod h1:2oVxTBSftRTh4+MVfUaUXR6bn2GDXCaMcOG4Dk3rfio= From 1ec4dad46b23c9fa96ac18d70ae7ff343a9b0fa8 Mon Sep 17 00:00:00 2001 From: Gabriel Augendre Date: Thu, 16 Jan 2025 23:55:39 +0100 Subject: [PATCH 3/6] feat: fatcontext settings --- .golangci.next.reference.yml | 6 ++++++ pkg/config/linters_settings.go | 8 ++++++++ pkg/golinters/fatcontext/fatcontext.go | 15 ++++++++++++--- pkg/lint/lintersdb/builder_linter.go | 2 +- 4 files changed, 27 insertions(+), 4 deletions(-) diff --git a/.golangci.next.reference.yml b/.golangci.next.reference.yml index aeda8070e4ae..48b7c1593eda 100644 --- a/.golangci.next.reference.yml +++ b/.golangci.next.reference.yml @@ -548,6 +548,12 @@ linters-settings: exclude: - '.+/cobra\.Command$' + fatcontext: + # Check for potential fat contexts in struct pointers. + # May generate false positives. + # Default: false + check-struct-pointers: true + forbidigo: # Forbid the following identifiers (list of regexp). # Default: ["^(fmt\\.Print(|f|ln)|print|println)$"] diff --git a/pkg/config/linters_settings.go b/pkg/config/linters_settings.go index 8e6c184ca4d3..f1fbf906e147 100644 --- a/pkg/config/linters_settings.go +++ b/pkg/config/linters_settings.go @@ -40,6 +40,9 @@ var defaultLintersSettings = LintersSettings{ ExplicitExhaustiveMap: false, ExplicitExhaustiveSwitch: false, }, + Fatcontext: FatcontextSettings{ + CheckStructPointers: false, + }, Forbidigo: ForbidigoSettings{ ExcludeGodocExamples: true, }, @@ -223,6 +226,7 @@ type LintersSettings struct { ErrorLint ErrorLintSettings Exhaustive ExhaustiveSettings Exhaustruct ExhaustructSettings + Fatcontext FatcontextSettings Forbidigo ForbidigoSettings Funlen FunlenSettings Gci GciSettings @@ -430,6 +434,10 @@ type ExhaustructSettings struct { Exclude []string `mapstructure:"exclude"` } +type FatcontextSettings struct { + CheckStructPointers bool `mapstructure:"check-struct-pointers"` +} + type ForbidigoSettings struct { Forbid []ForbidigoPattern `mapstructure:"forbid"` ExcludeGodocExamples bool `mapstructure:"exclude-godoc-examples"` diff --git a/pkg/golinters/fatcontext/fatcontext.go b/pkg/golinters/fatcontext/fatcontext.go index 378025a8cc5e..2ffacacd39a7 100644 --- a/pkg/golinters/fatcontext/fatcontext.go +++ b/pkg/golinters/fatcontext/fatcontext.go @@ -4,16 +4,25 @@ import ( "github.com/Crocmagnon/fatcontext/pkg/analyzer" "golang.org/x/tools/go/analysis" + "github.com/golangci/golangci-lint/pkg/config" "github.com/golangci/golangci-lint/pkg/goanalysis" ) -func New() *goanalysis.Linter { - a := analyzer.Analyzer +func New(settings *config.FatcontextSettings) *goanalysis.Linter { + a := analyzer.NewAnalyzer() + + cfg := map[string]map[string]any{} + + if settings != nil { + cfg[a.Name] = map[string]any{ + analyzer.FlagCheckStructPointers: settings.CheckStructPointers, + } + } return goanalysis.NewLinter( a.Name, a.Doc, []*analysis.Analyzer{a}, - nil, + cfg, ).WithLoadMode(goanalysis.LoadModeTypesInfo) } diff --git a/pkg/lint/lintersdb/builder_linter.go b/pkg/lint/lintersdb/builder_linter.go index 116e46a9f4ee..beda9e3c76b6 100644 --- a/pkg/lint/lintersdb/builder_linter.go +++ b/pkg/lint/lintersdb/builder_linter.go @@ -307,7 +307,7 @@ func (LinterBuilder) Build(cfg *config.Config) ([]*linter.Config, error) { WithPresets(linter.PresetStyle). WithURL("https://github.com/gostaticanalysis/forcetypeassert"), - linter.NewConfig(fatcontext.New()). + linter.NewConfig(fatcontext.New(&cfg.LintersSettings.Fatcontext)). WithSince("v1.58.0"). WithPresets(linter.PresetPerformance). WithLoadForGoAnalysis(). From 485e2c46ace16be152a3881b35cff98325bf9c54 Mon Sep 17 00:00:00 2001 From: Fernandez Ludovic Date: Fri, 17 Jan 2025 00:57:46 +0100 Subject: [PATCH 4/6] review --- pkg/config/linters_settings.go | 3 --- 1 file changed, 3 deletions(-) diff --git a/pkg/config/linters_settings.go b/pkg/config/linters_settings.go index f1fbf906e147..9968f3a0760b 100644 --- a/pkg/config/linters_settings.go +++ b/pkg/config/linters_settings.go @@ -40,9 +40,6 @@ var defaultLintersSettings = LintersSettings{ ExplicitExhaustiveMap: false, ExplicitExhaustiveSwitch: false, }, - Fatcontext: FatcontextSettings{ - CheckStructPointers: false, - }, Forbidigo: ForbidigoSettings{ ExcludeGodocExamples: true, }, From 082f5d36d41824b3882ae8e0c3eb1489bb85c9ca Mon Sep 17 00:00:00 2001 From: Fernandez Ludovic Date: Fri, 17 Jan 2025 01:02:57 +0100 Subject: [PATCH 5/6] tests: add configuration tests --- .../testdata/fatcontext_structpointer.go | 25 +++++++++++++++++++ .../testdata/fatcontext_structpointer.yml | 4 +++ 2 files changed, 29 insertions(+) create mode 100644 pkg/golinters/fatcontext/testdata/fatcontext_structpointer.go create mode 100644 pkg/golinters/fatcontext/testdata/fatcontext_structpointer.yml diff --git a/pkg/golinters/fatcontext/testdata/fatcontext_structpointer.go b/pkg/golinters/fatcontext/testdata/fatcontext_structpointer.go new file mode 100644 index 000000000000..73968843d5b1 --- /dev/null +++ b/pkg/golinters/fatcontext/testdata/fatcontext_structpointer.go @@ -0,0 +1,25 @@ +//golangcitest:args -Efatcontext +//golangcitest:config_path testdata/fatcontext_structpointer.yml +package testdata + +import ( + "context" +) + +type Container struct { + Ctx context.Context +} + +func something() func(*Container) { + return func(r *Container) { + ctx := r.Ctx + ctx = context.WithValue(ctx, "key", "val") + r.Ctx = ctx // want "potential nested context in struct pointer" + } +} + +func blah(r *Container) { + ctx := r.Ctx + ctx = context.WithValue(ctx, "key", "val") + r.Ctx = ctx // want "potential nested context in struct pointer" +} diff --git a/pkg/golinters/fatcontext/testdata/fatcontext_structpointer.yml b/pkg/golinters/fatcontext/testdata/fatcontext_structpointer.yml new file mode 100644 index 000000000000..95924ee1d7d6 --- /dev/null +++ b/pkg/golinters/fatcontext/testdata/fatcontext_structpointer.yml @@ -0,0 +1,4 @@ +linters-settings: + fatcontext: + check-struct-pointers: true + From b68c1a50eb77e92a570f9a096448e584f5511dce Mon Sep 17 00:00:00 2001 From: Fernandez Ludovic Date: Fri, 17 Jan 2025 01:03:09 +0100 Subject: [PATCH 6/6] chore: update JSONSchema --- jsonschema/golangci.next.jsonschema.json | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/jsonschema/golangci.next.jsonschema.json b/jsonschema/golangci.next.jsonschema.json index 4d94d0674f65..79c5974a1bef 100644 --- a/jsonschema/golangci.next.jsonschema.json +++ b/jsonschema/golangci.next.jsonschema.json @@ -1019,6 +1019,17 @@ } } }, + "fatcontext": { + "type": "object", + "additionalProperties": false, + "properties": { + "check-struct-pointers": { + "description": "Check for potential fat contexts in struct pointers.", + "type": "boolean", + "default": false + } + } + }, "forbidigo": { "type": "object", "additionalProperties": false,