Skip to content

Commit

Permalink
Deprecate maligned, add govet fieldalignment as replacement (#1765)
Browse files Browse the repository at this point in the history
  • Loading branch information
ldez committed Feb 22, 2021
1 parent 326d715 commit 42ff682
Show file tree
Hide file tree
Showing 5 changed files with 63 additions and 2 deletions.
1 change: 1 addition & 0 deletions .golangci.example.yml
Expand Up @@ -297,6 +297,7 @@ linters-settings:
- (github.com/golangci/golangci-lint/pkg/logutils.Log).Fatalf

# enable or disable analyzers by name
# run `go tool vet help` to see all analyzers
enable:
- atomicalign
enable-all: false
Expand Down
2 changes: 2 additions & 0 deletions pkg/golinters/govet.go
Expand Up @@ -15,6 +15,7 @@ import (
_ "golang.org/x/tools/go/analysis/passes/ctrlflow" // unused, internal analyzer
"golang.org/x/tools/go/analysis/passes/deepequalerrors"
"golang.org/x/tools/go/analysis/passes/errorsas"
"golang.org/x/tools/go/analysis/passes/fieldalignment"
"golang.org/x/tools/go/analysis/passes/findcall"
"golang.org/x/tools/go/analysis/passes/httpresponse"
"golang.org/x/tools/go/analysis/passes/ifaceassert"
Expand Down Expand Up @@ -55,6 +56,7 @@ var (
copylock.Analyzer,
deepequalerrors.Analyzer,
errorsas.Analyzer,
fieldalignment.Analyzer,
findcall.Analyzer,
httpresponse.Analyzer,
ifaceassert.Analyzer,
Expand Down
3 changes: 2 additions & 1 deletion pkg/lint/lintersdb/manager.go
Expand Up @@ -238,7 +238,8 @@ func (m Manager) GetAllSupportedLinterConfigs() []*linter.Config {
linter.NewConfig(golinters.NewMaligned()).
WithLoadForGoAnalysis().
WithPresets(linter.PresetPerformance).
WithURL("https://github.com/mdempsky/maligned"),
WithURL("https://github.com/mdempsky/maligned").
Deprecated("The repository of the linter has been archived by the owner. Use govet 'fieldalignment' instead."),
linter.NewConfig(golinters.NewDepguard()).
WithLoadForGoAnalysis().
WithPresets(linter.PresetStyle).
Expand Down
57 changes: 57 additions & 0 deletions test/testdata/govet_fieldalignment.go
@@ -0,0 +1,57 @@
//args: -Egovet
//config: linters-settings.govet.enable=fieldalignment
package testdata

type gvfaGood struct {
y int32
x byte
z byte
}

type gvfaBad struct { // ERROR "struct of size 12 could be 8"
x byte
y int32
z byte
}

type gvfaPointerGood struct {
P *int
buf [1000]uintptr
}

type gvfaPointerBad struct { // ERROR "struct with 8008 pointer bytes could be 8"
buf [1000]uintptr
P *int
}

type gvfaPointerSorta struct {
a struct {
p *int
q uintptr
}
b struct {
p *int
q [2]uintptr
}
}

type gvfaPointerSortaBad struct { // ERROR "struct with 32 pointer bytes could be 24"
a struct {
p *int
q [2]uintptr
}
b struct {
p *int
q uintptr
}
}

type gvfaZeroGood struct {
a [0]byte
b uint32
}

type gvfaZeroBad struct { // ERROR "struct of size 8 could be 4"
a uint32
b [0]byte
}
2 changes: 1 addition & 1 deletion test/testdata/maligned.go
@@ -1,4 +1,4 @@
//args: -Emaligned
//args: -Emaligned --internal-cmd-test
package testdata

type BadAlignedStruct struct { // ERROR "struct of size 24 bytes could be of size 16 bytes"
Expand Down

0 comments on commit 42ff682

Please sign in to comment.