build(deps): bump github.com/alecthomas/go-check-sumtype from 0.1.4 to 0.2.0 (#5038)

Co-authored-by: Fernandez Ludovic <ldez@users.noreply.github.com>
This commit is contained in:
dependabot[bot] 2024-09-26 16:16:41 +02:00 committed by GitHub
parent aa669e2290
commit 0798941846
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
12 changed files with 89 additions and 9 deletions

View File

@ -516,6 +516,11 @@ linters-settings:
# Default: false # Default: false
forbid-spec-pollution: true forbid-spec-pollution: true
gochecksumtype:
# Presence of `default` case in switch statements satisfies exhaustiveness, if all members are not listed.
# Default: true
default-signifies-exhaustive: false
gocognit: gocognit:
# Minimal code complexity to report. # Minimal code complexity to report.
# Default: 30 (but we recommend 10-20) # Default: 30 (but we recommend 10-20)

2
go.mod
View File

@ -15,7 +15,7 @@ require (
github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24 github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24
github.com/GaijinEntertainment/go-exhaustruct/v3 v3.3.0 github.com/GaijinEntertainment/go-exhaustruct/v3 v3.3.0
github.com/OpenPeeDeeP/depguard/v2 v2.2.0 github.com/OpenPeeDeeP/depguard/v2 v2.2.0
github.com/alecthomas/go-check-sumtype v0.1.4 github.com/alecthomas/go-check-sumtype v0.2.0
github.com/alexkohler/nakedret/v2 v2.0.4 github.com/alexkohler/nakedret/v2 v2.0.4
github.com/alexkohler/prealloc v1.0.0 github.com/alexkohler/prealloc v1.0.0
github.com/alingse/asasalint v0.0.11 github.com/alingse/asasalint v0.0.11

4
go.sum generated
View File

@ -61,8 +61,8 @@ github.com/OpenPeeDeeP/depguard/v2 v2.2.0 h1:vDfG60vDtIuf0MEOhmLlLLSzqaRM8EMcgJP
github.com/OpenPeeDeeP/depguard/v2 v2.2.0/go.mod h1:CIzddKRvLBC4Au5aYP/i3nyaWQ+ClszLIuVocRiCYFQ= github.com/OpenPeeDeeP/depguard/v2 v2.2.0/go.mod h1:CIzddKRvLBC4Au5aYP/i3nyaWQ+ClszLIuVocRiCYFQ=
github.com/alecthomas/assert/v2 v2.2.2 h1:Z/iVC0xZfWTaFNE6bA3z07T86hd45Xe2eLt6WVy2bbk= github.com/alecthomas/assert/v2 v2.2.2 h1:Z/iVC0xZfWTaFNE6bA3z07T86hd45Xe2eLt6WVy2bbk=
github.com/alecthomas/assert/v2 v2.2.2/go.mod h1:pXcQ2Asjp247dahGEmsZ6ru0UVwnkhktn7S0bBDLxvQ= github.com/alecthomas/assert/v2 v2.2.2/go.mod h1:pXcQ2Asjp247dahGEmsZ6ru0UVwnkhktn7S0bBDLxvQ=
github.com/alecthomas/go-check-sumtype v0.1.4 h1:WCvlB3l5Vq5dZQTFmodqL2g68uHiSwwlWcT5a2FGK0c= github.com/alecthomas/go-check-sumtype v0.2.0 h1:Bo+e4DFf3rs7ME9w/0SU/g6nmzJaphduP8Cjiz0gbwY=
github.com/alecthomas/go-check-sumtype v0.1.4/go.mod h1:WyYPfhfkdhyrdaligV6svFopZV8Lqdzn5pyVBaV6jhQ= github.com/alecthomas/go-check-sumtype v0.2.0/go.mod h1:WyYPfhfkdhyrdaligV6svFopZV8Lqdzn5pyVBaV6jhQ=
github.com/alecthomas/repr v0.2.0 h1:HAzS41CIzNW5syS8Mf9UwXhNH1J9aix/BvDRf1Ml2Yk= github.com/alecthomas/repr v0.2.0 h1:HAzS41CIzNW5syS8Mf9UwXhNH1J9aix/BvDRf1Ml2Yk=
github.com/alecthomas/repr v0.2.0/go.mod h1:Fr0507jx4eOXV7AlPV6AVZLYrLIuIeSOWtW57eE/O/4= github.com/alecthomas/repr v0.2.0/go.mod h1:Fr0507jx4eOXV7AlPV6AVZLYrLIuIeSOWtW57eE/O/4=
github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=

View File

@ -1174,6 +1174,17 @@
} }
} }
}, },
"gochecksumtype": {
"type": "object",
"additionalProperties": false,
"properties": {
"default-signifies-exhaustive": {
"description": "Presence of `default` case in switch statements satisfies exhaustiveness, if all members are not listed.",
"type": "boolean",
"default": true
}
}
},
"gocognit": { "gocognit": {
"type": "object", "type": "object",
"additionalProperties": false, "additionalProperties": false,

View File

@ -47,6 +47,9 @@ var defaultLintersSettings = LintersSettings{
Sections: []string{"standard", "default"}, Sections: []string{"standard", "default"},
SkipGenerated: true, SkipGenerated: true,
}, },
GoChecksumType: GoChecksumTypeSettings{
DefaultSignifiesExhaustive: true,
},
Gocognit: GocognitSettings{ Gocognit: GocognitSettings{
MinComplexity: 30, MinComplexity: 30,
}, },
@ -216,6 +219,7 @@ type LintersSettings struct {
Gci GciSettings Gci GciSettings
GinkgoLinter GinkgoLinterSettings GinkgoLinter GinkgoLinterSettings
Gocognit GocognitSettings Gocognit GocognitSettings
GoChecksumType GoChecksumTypeSettings
Goconst GoConstSettings Goconst GoConstSettings
Gocritic GoCriticSettings Gocritic GoCriticSettings
Gocyclo GoCycloSettings Gocyclo GoCycloSettings
@ -485,6 +489,10 @@ type GinkgoLinterSettings struct {
ForbidSpecPollution bool `mapstructure:"forbid-spec-pollution"` ForbidSpecPollution bool `mapstructure:"forbid-spec-pollution"`
} }
type GoChecksumTypeSettings struct {
DefaultSignifiesExhaustive bool `mapstructure:"default-signifies-exhaustive"`
}
type GocognitSettings struct { type GocognitSettings struct {
MinComplexity int `mapstructure:"min-complexity"` MinComplexity int `mapstructure:"min-complexity"`
} }

View File

@ -1,5 +1,5 @@
//golangcitest:args -Eexhaustruct //golangcitest:args -Eexhaustruct
//golangcitest:config_path testdata/exhaustruct.yml //golangcitest:config_path testdata/exhaustruct_custom.yml
package testdata package testdata
import "time" import "time"

View File

@ -8,6 +8,7 @@ import (
"golang.org/x/tools/go/analysis" "golang.org/x/tools/go/analysis"
"golang.org/x/tools/go/packages" "golang.org/x/tools/go/packages"
"github.com/golangci/golangci-lint/pkg/config"
"github.com/golangci/golangci-lint/pkg/goanalysis" "github.com/golangci/golangci-lint/pkg/goanalysis"
"github.com/golangci/golangci-lint/pkg/lint/linter" "github.com/golangci/golangci-lint/pkg/lint/linter"
"github.com/golangci/golangci-lint/pkg/result" "github.com/golangci/golangci-lint/pkg/result"
@ -15,7 +16,7 @@ import (
const linterName = "gochecksumtype" const linterName = "gochecksumtype"
func New() *goanalysis.Linter { func New(settings *config.GoChecksumTypeSettings) *goanalysis.Linter {
var mu sync.Mutex var mu sync.Mutex
var resIssues []goanalysis.Issue var resIssues []goanalysis.Issue
@ -23,7 +24,7 @@ func New() *goanalysis.Linter {
Name: linterName, Name: linterName,
Doc: goanalysis.TheOnlyanalyzerDoc, Doc: goanalysis.TheOnlyanalyzerDoc,
Run: func(pass *analysis.Pass) (any, error) { Run: func(pass *analysis.Pass) (any, error) {
issues, err := runGoCheckSumType(pass) issues, err := runGoCheckSumType(pass, settings)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -50,7 +51,7 @@ func New() *goanalysis.Linter {
}).WithLoadMode(goanalysis.LoadModeTypesInfo) }).WithLoadMode(goanalysis.LoadModeTypesInfo)
} }
func runGoCheckSumType(pass *analysis.Pass) ([]goanalysis.Issue, error) { func runGoCheckSumType(pass *analysis.Pass, settings *config.GoChecksumTypeSettings) ([]goanalysis.Issue, error) {
var resIssues []goanalysis.Issue var resIssues []goanalysis.Issue
pkg := &packages.Package{ pkg := &packages.Package{
@ -61,7 +62,8 @@ func runGoCheckSumType(pass *analysis.Pass) ([]goanalysis.Issue, error) {
} }
var unknownError error var unknownError error
errors := gochecksumtype.Run([]*packages.Package{pkg}) errors := gochecksumtype.Run([]*packages.Package{pkg},
gochecksumtype.Config{DefaultSignifiesExhaustive: settings.DefaultSignifiesExhaustive})
for _, err := range errors { for _, err := range errors {
err, ok := err.(gochecksumtype.Error) err, ok := err.(gochecksumtype.Error)
if !ok { if !ok {

View File

@ -29,6 +29,12 @@ func sumTypeTest() {
panic("??") panic("??")
} }
switch sum.(type) {
case *One:
default:
log.Println("legit catch all goes here")
}
log.Println("??") log.Println("??")
switch sum.(type) { switch sum.(type) {

View File

@ -0,0 +1,45 @@
//golangcitest:args -Egochecksumtype
//golangcitest:config_path testdata/gochecksumtype_custom.yml
package testdata
import (
"log"
)
//sumtype:decl
type SumType interface{ isSumType() }
//sumtype:decl
type One struct{} // want "type 'One' is not an interface"
func (One) isSumType() {}
type Two struct{}
func (Two) isSumType() {}
func sumTypeTest() {
var sum SumType = One{}
switch sum.(type) { // want "exhaustiveness check failed for sum type.*SumType.*missing cases for Two"
case One:
}
switch sum.(type) { // want "exhaustiveness check failed for sum type.*SumType.*missing cases for Two"
case One:
default:
panic("??")
}
switch sum.(type) { // want "exhaustiveness check failed for sum type.*SumType.*missing cases for Two"
case *One:
default:
log.Println("legit catch all goes here")
}
log.Println("??")
switch sum.(type) {
case One:
case Two:
}
}

View File

@ -0,0 +1,3 @@
linters-settings:
gochecksumtype:
default-signifies-exhaustive: false

View File

@ -335,7 +335,7 @@ func (LinterBuilder) Build(cfg *config.Config) ([]*linter.Config, error) {
WithSince("v1.12.0"). WithSince("v1.12.0").
WithPresets(linter.PresetStyle), WithPresets(linter.PresetStyle),
linter.NewConfig(gochecksumtype.New()). linter.NewConfig(gochecksumtype.New(&cfg.LintersSettings.GoChecksumType)).
WithSince("v1.55.0"). WithSince("v1.55.0").
WithPresets(linter.PresetBugs). WithPresets(linter.PresetBugs).
WithLoadForGoAnalysis(). WithLoadForGoAnalysis().