dev: group linter implementation and integration tests (#4603)
This commit is contained in:
parent
93d3a38fe4
commit
2c666ed4eb
1
.gitignore
vendored
1
.gitignore
vendored
@ -3,6 +3,7 @@
|
||||
/*.pdf
|
||||
/*.pprof
|
||||
/*.txt
|
||||
/test.lock
|
||||
/.idea/
|
||||
/.vscode/
|
||||
/dist/
|
||||
|
@ -163,27 +163,27 @@ issues:
|
||||
text: "SA1019: c.cfg.Run.ShowStats is deprecated: use Output.ShowStats instead."
|
||||
|
||||
# Deprecated linter options.
|
||||
- path: pkg/golinters/errcheck.go
|
||||
- path: pkg/golinters/errcheck/errcheck.go
|
||||
linters: [staticcheck]
|
||||
text: "SA1019: errCfg.Exclude is deprecated: use ExcludeFunctions instead"
|
||||
- path: pkg/golinters/govet.go
|
||||
- path: pkg/golinters/govet/govet.go
|
||||
linters: [staticcheck]
|
||||
text: "SA1019: cfg.CheckShadowing is deprecated: the linter should be enabled inside Enable."
|
||||
- path: pkg/golinters/godot.go
|
||||
- path: pkg/golinters/godot/godot.go
|
||||
linters: [staticcheck]
|
||||
text: "SA1019: settings.CheckAll is deprecated: use Scope instead"
|
||||
- path: pkg/golinters/gci.go
|
||||
- path: pkg/golinters/gci/gci.go
|
||||
linters: [staticcheck]
|
||||
text: "SA1019: settings.LocalPrefixes is deprecated: use Sections instead."
|
||||
- path: pkg/golinters/mnd.go
|
||||
- path: pkg/golinters/mnd/mnd.go
|
||||
linters: [staticcheck]
|
||||
text: "SA1019: settings.Settings is deprecated: use root level settings instead."
|
||||
- path: pkg/golinters/mnd.go
|
||||
- path: pkg/golinters/mnd/mnd.go
|
||||
linters: [staticcheck]
|
||||
text: "SA1019: config.GoMndSettings is deprecated: use MndSettings."
|
||||
|
||||
# Related to `run.go`, it cannot be removed.
|
||||
- path: pkg/golinters/gofumpt.go
|
||||
- path: pkg/golinters/gofumpt/gofumpt.go
|
||||
linters: [staticcheck]
|
||||
text: "SA1019: settings.LangVersion is deprecated: use the global `run.go` instead."
|
||||
- path: pkg/golinters/internal/staticcheck_common.go
|
||||
@ -194,7 +194,7 @@ issues:
|
||||
text: "SA1019: (.+).(GoVersion|LangVersion) is deprecated: use the global `run.go` instead."
|
||||
|
||||
# Based on existing code, the modifications should be limited to make maintenance easier.
|
||||
- path: pkg/golinters/unused.go
|
||||
- path: pkg/golinters/unused/unused.go
|
||||
linters: [gocritic]
|
||||
text: "rangeValCopy: each iteration copies 160 bytes \\(consider pointers or indexing\\)"
|
||||
|
||||
|
20
Makefile
20
Makefile
@ -33,23 +33,21 @@ test: build
|
||||
GL_TEST_RUN=1 go test -v -parallel 2 ./...
|
||||
.PHONY: test
|
||||
|
||||
# ex: T=gofmt.go make test_fix
|
||||
# the value of `T` is the name of a file from `test/testdata/fix`
|
||||
test_fix: build
|
||||
GL_TEST_RUN=1 go test -v ./test -count 1 -run TestFix/$T
|
||||
.PHONY: test_fix
|
||||
|
||||
test_race: build_race
|
||||
GL_TEST_RUN=1 ./$(BINARY) run -v --timeout=5m
|
||||
.PHONY: test_race
|
||||
|
||||
test_linters:
|
||||
# ex: T=output.go make test_integration
|
||||
# the value of `T` is the name of a file from `test/testdata`
|
||||
test_integration:
|
||||
GL_TEST_RUN=1 go test -v ./test -count 1 -run TestSourcesFromTestdata/$T
|
||||
.PHONY: test_linters
|
||||
.PHONY: test_integration
|
||||
|
||||
test_linters_sub:
|
||||
GL_TEST_RUN=1 go test -v ./test -count 1 -run TestSourcesFromTestdataSubDir/$T
|
||||
.PHONY: test_linters_sub
|
||||
# ex: T=multiple-issues-fix.go make test_integration_fix
|
||||
# the value of `T` is the name of a file from `test/testdata/fix`
|
||||
test_integration_fix: build
|
||||
GL_TEST_RUN=1 go test -v ./test -count 1 -run TestFix/$T
|
||||
.PHONY: test_integration_fix
|
||||
|
||||
# Maintenance
|
||||
|
||||
|
@ -15,19 +15,16 @@ We don't accept non `go/analysis` linters.
|
||||
After that:
|
||||
|
||||
1. Implement functional tests for the linter:
|
||||
- Add one file into directory [`test/testdata`](https://github.com/golangci/golangci-lint/tree/master/test/testdata).
|
||||
- Run the test to ensure that test fails:
|
||||
```bash
|
||||
T=yourlintername.go make test_linters
|
||||
```
|
||||
- Add one file into directory `pkg/golinters/{yourlintername}/testdata/`.
|
||||
- Run the test to ensure that test fails.
|
||||
- Run:
|
||||
```bash
|
||||
go run ./cmd/golangci-lint/ run --no-config --disable-all --enable=yourlintername ./test/testdata/yourlintername.go
|
||||
go run ./cmd/golangci-lint/ run --no-config --disable-all --enable={yourlintername} ./pkg/golinters/{yourlintername}/testdata/{yourlintername}.go
|
||||
```
|
||||
2. Add a new file `pkg/golinters/{yourlintername}.go`.
|
||||
2. Add a new file `pkg/golinters/{yourlintername}/{yourlintername}.go`.
|
||||
Look at other linters in this directory.
|
||||
Implement linter integration and check that test passes.
|
||||
3. Add the new struct for the linter (which you've implemented in `pkg/golinters/{yourlintername}.go`) to the
|
||||
3. Add the new struct for the linter (which you've implemented in `pkg/golinters/{yourlintername}/{yourlintername}.go`) to the
|
||||
list of all supported linters in [`pkg/lint/lintersdb/builder_linter.go`](https://github.com/golangci/golangci-lint/blob/master/pkg/lint/lintersdb/builder_linter.go)
|
||||
to the method `LinterBuilder.Build`.
|
||||
- Add `WithSince("next_version")`, where `next_version` must be replaced by the next minor version. (ex: v1.2.0 if the current version is v1.1.0)
|
||||
|
@ -1,4 +1,4 @@
|
||||
package golinters
|
||||
package asasalint
|
||||
|
||||
import (
|
||||
"github.com/alingse/asasalint"
|
||||
@ -9,7 +9,7 @@ import (
|
||||
"github.com/golangci/golangci-lint/pkg/golinters/internal"
|
||||
)
|
||||
|
||||
func NewAsasalint(setting *config.AsasalintSettings) *goanalysis.Linter {
|
||||
func New(setting *config.AsasalintSettings) *goanalysis.Linter {
|
||||
cfg := asasalint.LinterSetting{}
|
||||
if setting != nil {
|
||||
cfg.Exclude = setting.Exclude
|
11
pkg/golinters/asasalint/asasalint_integration_test.go
Normal file
11
pkg/golinters/asasalint/asasalint_integration_test.go
Normal file
@ -0,0 +1,11 @@
|
||||
package asasalint
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/golangci/golangci-lint/test/testshared/integration"
|
||||
)
|
||||
|
||||
func TestFromTestdata(t *testing.T) {
|
||||
integration.RunTestdata(t)
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
package golinters
|
||||
package asciicheck
|
||||
|
||||
import (
|
||||
"github.com/tdakkota/asciicheck"
|
||||
@ -7,7 +7,7 @@ import (
|
||||
"github.com/golangci/golangci-lint/pkg/goanalysis"
|
||||
)
|
||||
|
||||
func NewAsciicheck() *goanalysis.Linter {
|
||||
func New() *goanalysis.Linter {
|
||||
a := asciicheck.NewAnalyzer()
|
||||
|
||||
return goanalysis.NewLinter(
|
11
pkg/golinters/asciicheck/asciicheck_integration_test.go
Normal file
11
pkg/golinters/asciicheck/asciicheck_integration_test.go
Normal file
@ -0,0 +1,11 @@
|
||||
package asciicheck
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/golangci/golangci-lint/test/testshared/integration"
|
||||
)
|
||||
|
||||
func TestFromTestdata(t *testing.T) {
|
||||
integration.RunTestdata(t)
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
package golinters
|
||||
package bidichk
|
||||
|
||||
import (
|
||||
"strings"
|
||||
@ -10,7 +10,7 @@ import (
|
||||
"github.com/golangci/golangci-lint/pkg/goanalysis"
|
||||
)
|
||||
|
||||
func NewBiDiChk(cfg *config.BiDiChkSettings) *goanalysis.Linter {
|
||||
func New(cfg *config.BiDiChkSettings) *goanalysis.Linter {
|
||||
a := bidichk.NewAnalyzer()
|
||||
|
||||
cfgMap := map[string]map[string]any{}
|
11
pkg/golinters/bidichk/bidichk_integration_test.go
Normal file
11
pkg/golinters/bidichk/bidichk_integration_test.go
Normal file
@ -0,0 +1,11 @@
|
||||
package bidichk
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/golangci/golangci-lint/test/testshared/integration"
|
||||
)
|
||||
|
||||
func TestFromTestdata(t *testing.T) {
|
||||
integration.RunTestdata(t)
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
package golinters
|
||||
package bodyclose
|
||||
|
||||
import (
|
||||
"github.com/timakin/bodyclose/passes/bodyclose"
|
||||
@ -7,7 +7,7 @@ import (
|
||||
"github.com/golangci/golangci-lint/pkg/goanalysis"
|
||||
)
|
||||
|
||||
func NewBodyclose() *goanalysis.Linter {
|
||||
func New() *goanalysis.Linter {
|
||||
a := bodyclose.Analyzer
|
||||
|
||||
return goanalysis.NewLinter(
|
11
pkg/golinters/bodyclose/bodyclose_integration_test.go
Normal file
11
pkg/golinters/bodyclose/bodyclose_integration_test.go
Normal file
@ -0,0 +1,11 @@
|
||||
package bodyclose
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/golangci/golangci-lint/test/testshared/integration"
|
||||
)
|
||||
|
||||
func TestFromTestdata(t *testing.T) {
|
||||
integration.RunTestdata(t)
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
package golinters
|
||||
package containedctx
|
||||
|
||||
import (
|
||||
"github.com/sivchari/containedctx"
|
||||
@ -7,7 +7,7 @@ import (
|
||||
"github.com/golangci/golangci-lint/pkg/goanalysis"
|
||||
)
|
||||
|
||||
func NewContainedCtx() *goanalysis.Linter {
|
||||
func New() *goanalysis.Linter {
|
||||
a := containedctx.Analyzer
|
||||
|
||||
return goanalysis.NewLinter(
|
11
pkg/golinters/containedctx/containedctx_integration_test.go
Normal file
11
pkg/golinters/containedctx/containedctx_integration_test.go
Normal file
@ -0,0 +1,11 @@
|
||||
package containedctx
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/golangci/golangci-lint/test/testshared/integration"
|
||||
)
|
||||
|
||||
func TestFromTestdata(t *testing.T) {
|
||||
integration.RunTestdata(t)
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
package golinters
|
||||
package contextcheck
|
||||
|
||||
import (
|
||||
"github.com/kkHAIKE/contextcheck"
|
||||
@ -8,7 +8,7 @@ import (
|
||||
"github.com/golangci/golangci-lint/pkg/lint/linter"
|
||||
)
|
||||
|
||||
func NewContextCheck() *goanalysis.Linter {
|
||||
func New() *goanalysis.Linter {
|
||||
analyzer := contextcheck.NewAnalyzer(contextcheck.Configuration{})
|
||||
|
||||
return goanalysis.NewLinter(
|
11
pkg/golinters/contextcheck/contextcheck_integration_test.go
Normal file
11
pkg/golinters/contextcheck/contextcheck_integration_test.go
Normal file
@ -0,0 +1,11 @@
|
||||
package contextcheck
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/golangci/golangci-lint/test/testshared/integration"
|
||||
)
|
||||
|
||||
func TestFromTestdata(t *testing.T) {
|
||||
integration.RunTestdata(t)
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
package golinters
|
||||
package copyloopvar
|
||||
|
||||
import (
|
||||
"github.com/karamaru-alpha/copyloopvar"
|
||||
@ -8,7 +8,7 @@ import (
|
||||
"github.com/golangci/golangci-lint/pkg/goanalysis"
|
||||
)
|
||||
|
||||
func NewCopyLoopVar(settings *config.CopyLoopVarSettings) *goanalysis.Linter {
|
||||
func New(settings *config.CopyLoopVarSettings) *goanalysis.Linter {
|
||||
a := copyloopvar.NewAnalyzer()
|
||||
|
||||
var cfg map[string]map[string]any
|
11
pkg/golinters/copyloopvar/copyloopvar_integration_test.go
Normal file
11
pkg/golinters/copyloopvar/copyloopvar_integration_test.go
Normal file
@ -0,0 +1,11 @@
|
||||
package copyloopvar
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/golangci/golangci-lint/test/testshared/integration"
|
||||
)
|
||||
|
||||
func TestFromTestdata(t *testing.T) {
|
||||
integration.RunTestdata(t)
|
||||
}
|
@ -1,7 +1,7 @@
|
||||
//go:build go1.22
|
||||
|
||||
//golangcitest:args -Ecopyloopvar
|
||||
//golangcitest:config_path testdata/configs/copyloopvar.yml
|
||||
//golangcitest:config_path testdata/copyloopvar.yml
|
||||
package testdata
|
||||
|
||||
import "fmt"
|
@ -1,4 +1,4 @@
|
||||
package golinters
|
||||
package cyclop
|
||||
|
||||
import (
|
||||
"github.com/bkielbasa/cyclop/pkg/analyzer"
|
||||
@ -8,7 +8,7 @@ import (
|
||||
"github.com/golangci/golangci-lint/pkg/goanalysis"
|
||||
)
|
||||
|
||||
func NewCyclop(settings *config.Cyclop) *goanalysis.Linter {
|
||||
func New(settings *config.Cyclop) *goanalysis.Linter {
|
||||
a := analyzer.NewAnalyzer()
|
||||
|
||||
var cfg map[string]map[string]any
|
11
pkg/golinters/cyclop/cyclop_integration_test.go
Normal file
11
pkg/golinters/cyclop/cyclop_integration_test.go
Normal file
@ -0,0 +1,11 @@
|
||||
package cyclop
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/golangci/golangci-lint/test/testshared/integration"
|
||||
)
|
||||
|
||||
func TestFromTestdata(t *testing.T) {
|
||||
integration.RunTestdata(t)
|
||||
}
|
@ -1,5 +1,5 @@
|
||||
//golangcitest:args -Ecyclop
|
||||
//golangcitest:config_path testdata/configs/cyclop.yml
|
||||
//golangcitest:config_path testdata/cyclop.yml
|
||||
package testdata
|
||||
|
||||
func cyclopComplexFunc(s string) { // want "calculated cyclomatic complexity for function cyclopComplexFunc is 22, max is 15"
|
@ -1,4 +1,4 @@
|
||||
package golinters
|
||||
package decorder
|
||||
|
||||
import (
|
||||
"strings"
|
||||
@ -10,7 +10,7 @@ import (
|
||||
"github.com/golangci/golangci-lint/pkg/goanalysis"
|
||||
)
|
||||
|
||||
func NewDecorder(settings *config.DecorderSettings) *goanalysis.Linter {
|
||||
func New(settings *config.DecorderSettings) *goanalysis.Linter {
|
||||
a := decorder.Analyzer
|
||||
|
||||
// disable all rules/checks by default
|
11
pkg/golinters/decorder/decorder_integration_test.go
Normal file
11
pkg/golinters/decorder/decorder_integration_test.go
Normal file
@ -0,0 +1,11 @@
|
||||
package decorder
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/golangci/golangci-lint/test/testshared/integration"
|
||||
)
|
||||
|
||||
func TestFromTestdata(t *testing.T) {
|
||||
integration.RunTestdata(t)
|
||||
}
|
@ -1,5 +1,5 @@
|
||||
//golangcitest:args -Edecorder
|
||||
//golangcitest:config_path testdata/configs/decorder_custom.yml
|
||||
//golangcitest:config_path testdata/decorder_custom.yml
|
||||
package testdata
|
||||
|
||||
import "math"
|
@ -1,4 +1,4 @@
|
||||
package golinters
|
||||
package depguard
|
||||
|
||||
import (
|
||||
"github.com/OpenPeeDeeP/depguard/v2"
|
||||
@ -9,7 +9,7 @@ import (
|
||||
"github.com/golangci/golangci-lint/pkg/lint/linter"
|
||||
)
|
||||
|
||||
func NewDepguard(settings *config.DepGuardSettings) *goanalysis.Linter {
|
||||
func New(settings *config.DepGuardSettings) *goanalysis.Linter {
|
||||
conf := depguard.LinterSettings{}
|
||||
|
||||
if settings != nil {
|
11
pkg/golinters/depguard/depguard_integration_test.go
Normal file
11
pkg/golinters/depguard/depguard_integration_test.go
Normal file
@ -0,0 +1,11 @@
|
||||
package depguard
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/golangci/golangci-lint/test/testshared/integration"
|
||||
)
|
||||
|
||||
func TestFromTestdata(t *testing.T) {
|
||||
integration.RunTestdata(t)
|
||||
}
|
@ -1,5 +1,5 @@
|
||||
//golangcitest:args -Edepguard
|
||||
//golangcitest:config_path testdata/configs/depguard.yml
|
||||
//golangcitest:config_path testdata/depguard.yml
|
||||
package testdata
|
||||
|
||||
import (
|
@ -1,5 +1,5 @@
|
||||
//golangcitest:args -Edepguard
|
||||
//golangcitest:config_path testdata/configs/depguard_additional_guards.yml
|
||||
//golangcitest:config_path testdata/depguard_additional_guards.yml
|
||||
package testdata
|
||||
|
||||
import (
|
@ -1,5 +1,5 @@
|
||||
//golangcitest:args -Edepguard
|
||||
//golangcitest:config_path testdata/configs/depguard_ignore_file_rules.yml
|
||||
//golangcitest:config_path testdata/depguard_ignore_file_rules.yml
|
||||
//golangcitest:expected_exitcode 0
|
||||
package testdata
|
||||
|
@ -1,4 +1,4 @@
|
||||
package golinters
|
||||
package dogsled
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
@ -14,14 +14,14 @@ import (
|
||||
"github.com/golangci/golangci-lint/pkg/result"
|
||||
)
|
||||
|
||||
const dogsledName = "dogsled"
|
||||
const name = "dogsled"
|
||||
|
||||
func NewDogsled(settings *config.DogsledSettings) *goanalysis.Linter {
|
||||
func New(settings *config.DogsledSettings) *goanalysis.Linter {
|
||||
var mu sync.Mutex
|
||||
var resIssues []goanalysis.Issue
|
||||
|
||||
analyzer := &analysis.Analyzer{
|
||||
Name: dogsledName,
|
||||
Name: name,
|
||||
Doc: goanalysis.TheOnlyanalyzerDoc,
|
||||
Run: func(pass *analysis.Pass) (any, error) {
|
||||
issues := runDogsled(pass, settings)
|
||||
@ -39,7 +39,7 @@ func NewDogsled(settings *config.DogsledSettings) *goanalysis.Linter {
|
||||
}
|
||||
|
||||
return goanalysis.NewLinter(
|
||||
dogsledName,
|
||||
name,
|
||||
"Checks assignments with too many blank identifiers (e.g. x, _, _, _, := f())",
|
||||
[]*analysis.Analyzer{analyzer},
|
||||
nil,
|
||||
@ -100,7 +100,7 @@ func (v *returnsVisitor) Visit(node ast.Node) ast.Visitor {
|
||||
|
||||
if numBlank > v.maxBlanks {
|
||||
v.issues = append(v.issues, result.Issue{
|
||||
FromLinter: dogsledName,
|
||||
FromLinter: name,
|
||||
Text: fmt.Sprintf("declaration has %v blank identifiers", numBlank),
|
||||
Pos: v.f.Position(assgnStmt.Pos()),
|
||||
})
|
11
pkg/golinters/dogsled/dogsled_integration_test.go
Normal file
11
pkg/golinters/dogsled/dogsled_integration_test.go
Normal file
@ -0,0 +1,11 @@
|
||||
package dogsled
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/golangci/golangci-lint/test/testshared/integration"
|
||||
)
|
||||
|
||||
func TestFromTestdata(t *testing.T) {
|
||||
integration.RunTestdata(t)
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
package golinters
|
||||
package dupl
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
@ -16,14 +16,14 @@ import (
|
||||
"github.com/golangci/golangci-lint/pkg/result"
|
||||
)
|
||||
|
||||
const duplName = "dupl"
|
||||
const name = "dupl"
|
||||
|
||||
func NewDupl(settings *config.DuplSettings) *goanalysis.Linter {
|
||||
func New(settings *config.DuplSettings) *goanalysis.Linter {
|
||||
var mu sync.Mutex
|
||||
var resIssues []goanalysis.Issue
|
||||
|
||||
analyzer := &analysis.Analyzer{
|
||||
Name: duplName,
|
||||
Name: name,
|
||||
Doc: goanalysis.TheOnlyanalyzerDoc,
|
||||
Run: func(pass *analysis.Pass) (any, error) {
|
||||
issues, err := runDupl(pass, settings)
|
||||
@ -44,7 +44,7 @@ func NewDupl(settings *config.DuplSettings) *goanalysis.Linter {
|
||||
}
|
||||
|
||||
return goanalysis.NewLinter(
|
||||
duplName,
|
||||
name,
|
||||
"Tool for code clone detection",
|
||||
[]*analysis.Analyzer{analyzer},
|
||||
nil,
|
||||
@ -88,7 +88,7 @@ func runDupl(pass *analysis.Pass, settings *config.DuplSettings) ([]goanalysis.I
|
||||
To: i.From.LineEnd(),
|
||||
},
|
||||
Text: text,
|
||||
FromLinter: duplName,
|
||||
FromLinter: name,
|
||||
}, pass))
|
||||
}
|
||||
|
11
pkg/golinters/dupl/dupl_integration_test.go
Normal file
11
pkg/golinters/dupl/dupl_integration_test.go
Normal file
@ -0,0 +1,11 @@
|
||||
package dupl
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/golangci/golangci-lint/test/testshared/integration"
|
||||
)
|
||||
|
||||
func TestFromTestdata(t *testing.T) {
|
||||
integration.RunTestdata(t)
|
||||
}
|
@ -1,5 +1,5 @@
|
||||
//golangcitest:args -Edupl
|
||||
//golangcitest:config_path testdata/configs/dupl.yml
|
||||
//golangcitest:config_path testdata/dupl.yml
|
||||
package testdata
|
||||
|
||||
type DuplLogger struct{}
|
@ -1,4 +1,4 @@
|
||||
package golinters
|
||||
package dupword
|
||||
|
||||
import (
|
||||
"strings"
|
||||
@ -10,7 +10,7 @@ import (
|
||||
"github.com/golangci/golangci-lint/pkg/goanalysis"
|
||||
)
|
||||
|
||||
func NewDupWord(setting *config.DupWordSettings) *goanalysis.Linter {
|
||||
func New(setting *config.DupWordSettings) *goanalysis.Linter {
|
||||
a := dupword.NewAnalyzer()
|
||||
|
||||
cfgMap := map[string]map[string]any{}
|
11
pkg/golinters/dupword/dupword_integration_test.go
Normal file
11
pkg/golinters/dupword/dupword_integration_test.go
Normal file
@ -0,0 +1,11 @@
|
||||
package dupword
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/golangci/golangci-lint/test/testshared/integration"
|
||||
)
|
||||
|
||||
func TestFromTestdata(t *testing.T) {
|
||||
integration.RunTestdata(t)
|
||||
}
|
@ -1,5 +1,5 @@
|
||||
//golangcitest:args -Edupword
|
||||
//golangcitest:config_path testdata/configs/dupword_ignore_the.yml
|
||||
//golangcitest:config_path testdata/dupword_ignore_the.yml
|
||||
package testdata
|
||||
|
||||
import "fmt"
|
@ -1,4 +1,4 @@
|
||||
package golinters
|
||||
package durationcheck
|
||||
|
||||
import (
|
||||
"github.com/charithe/durationcheck"
|
||||
@ -7,7 +7,7 @@ import (
|
||||
"github.com/golangci/golangci-lint/pkg/goanalysis"
|
||||
)
|
||||
|
||||
func NewDurationCheck() *goanalysis.Linter {
|
||||
func New() *goanalysis.Linter {
|
||||
a := durationcheck.Analyzer
|
||||
|
||||
return goanalysis.NewLinter(
|
@ -0,0 +1,11 @@
|
||||
package durationcheck
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/golangci/golangci-lint/test/testshared/integration"
|
||||
)
|
||||
|
||||
func TestFromTestdata(t *testing.T) {
|
||||
integration.RunTestdata(t)
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
package golinters
|
||||
package err113
|
||||
|
||||
import (
|
||||
"github.com/Djarvur/go-err113"
|
||||
@ -7,7 +7,7 @@ import (
|
||||
"github.com/golangci/golangci-lint/pkg/goanalysis"
|
||||
)
|
||||
|
||||
func NewErr113() *goanalysis.Linter {
|
||||
func New() *goanalysis.Linter {
|
||||
a := err113.NewAnalyzer()
|
||||
|
||||
return goanalysis.NewLinter(
|
11
pkg/golinters/err113/err113_integration_test.go
Normal file
11
pkg/golinters/err113/err113_integration_test.go
Normal file
@ -0,0 +1,11 @@
|
||||
package err113
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/golangci/golangci-lint/test/testshared/integration"
|
||||
)
|
||||
|
||||
func TestFromTestdata(t *testing.T) {
|
||||
integration.RunTestdata(t)
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
package golinters
|
||||
package errcheck
|
||||
|
||||
import (
|
||||
"bufio"
|
||||
@ -22,20 +22,20 @@ import (
|
||||
"github.com/golangci/golangci-lint/pkg/result"
|
||||
)
|
||||
|
||||
const errcheckName = "errcheck"
|
||||
const name = "errcheck"
|
||||
|
||||
func NewErrcheck(settings *config.ErrcheckSettings) *goanalysis.Linter {
|
||||
func New(settings *config.ErrcheckSettings) *goanalysis.Linter {
|
||||
var mu sync.Mutex
|
||||
var resIssues []goanalysis.Issue
|
||||
|
||||
analyzer := &analysis.Analyzer{
|
||||
Name: errcheckName,
|
||||
Name: name,
|
||||
Doc: goanalysis.TheOnlyanalyzerDoc,
|
||||
Run: goanalysis.DummyRun,
|
||||
}
|
||||
|
||||
return goanalysis.NewLinter(
|
||||
errcheckName,
|
||||
name,
|
||||
"errcheck is a program for checking for unchecked errors in Go code. "+
|
||||
"These unchecked errors can be critical bugs in some cases",
|
||||
[]*analysis.Analyzer{analyzer},
|
||||
@ -100,7 +100,7 @@ func runErrCheck(lintCtx *linter.Context, pass *analysis.Pass, checker *errcheck
|
||||
|
||||
issues[i] = goanalysis.NewIssue(
|
||||
&result.Issue{
|
||||
FromLinter: errcheckName,
|
||||
FromLinter: name,
|
||||
Text: text,
|
||||
Pos: err.Pos,
|
||||
},
|
11
pkg/golinters/errcheck/errcheck_integration_test.go
Normal file
11
pkg/golinters/errcheck/errcheck_integration_test.go
Normal file
@ -0,0 +1,11 @@
|
||||
package errcheck
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/golangci/golangci-lint/test/testshared/integration"
|
||||
)
|
||||
|
||||
func TestFromTestdata(t *testing.T) {
|
||||
integration.RunTestdata(t)
|
||||
}
|
@ -1,5 +1,5 @@
|
||||
//golangcitest:args -Eerrcheck
|
||||
//golangcitest:config_path testdata/configs/errcheck_exclude.yml
|
||||
//golangcitest:config_path testdata/errcheck_exclude.yml
|
||||
package testdata
|
||||
|
||||
import (
|
@ -1,5 +1,5 @@
|
||||
//golangcitest:args -Eerrcheck
|
||||
//golangcitest:config_path testdata/configs/errcheck_exclude_functions.yml
|
||||
//golangcitest:config_path testdata/errcheck_exclude_functions.yml
|
||||
package testdata
|
||||
|
||||
import (
|
@ -1,5 +1,5 @@
|
||||
//golangcitest:args -Eerrcheck
|
||||
//golangcitest:config_path testdata/configs/errcheck_ignore_config.yml
|
||||
//golangcitest:config_path testdata/errcheck_ignore_config.yml
|
||||
package testdata
|
||||
|
||||
import (
|
@ -1,5 +1,5 @@
|
||||
//golangcitest:args -Eerrcheck
|
||||
//golangcitest:config_path testdata/configs/errcheck_ignore_default.yml
|
||||
//golangcitest:config_path testdata/errcheck_ignore_default.yml
|
||||
package testdata
|
||||
|
||||
import (
|
@ -1,5 +1,5 @@
|
||||
//golangcitest:args -Eerrcheck
|
||||
//golangcitest:config_path testdata/configs/errcheck_type_assertions.yml
|
||||
//golangcitest:config_path testdata/errcheck_type_assertions.yml
|
||||
//golangcitest:expected_exitcode 0
|
||||
package testdata
|
||||
|
@ -1,4 +1,4 @@
|
||||
package golinters
|
||||
package errchkjson
|
||||
|
||||
import (
|
||||
"github.com/breml/errchkjson"
|
||||
@ -8,7 +8,7 @@ import (
|
||||
"github.com/golangci/golangci-lint/pkg/goanalysis"
|
||||
)
|
||||
|
||||
func NewErrChkJSON(cfg *config.ErrChkJSONSettings) *goanalysis.Linter {
|
||||
func New(cfg *config.ErrChkJSONSettings) *goanalysis.Linter {
|
||||
a := errchkjson.NewAnalyzer()
|
||||
|
||||
cfgMap := map[string]map[string]any{}
|
11
pkg/golinters/errchkjson/errchkjson_integration_test.go
Normal file
11
pkg/golinters/errchkjson/errchkjson_integration_test.go
Normal file
@ -0,0 +1,11 @@
|
||||
package errchkjson
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/golangci/golangci-lint/test/testshared/integration"
|
||||
)
|
||||
|
||||
func TestFromTestdata(t *testing.T) {
|
||||
integration.RunTestdata(t)
|
||||
}
|
@ -1,5 +1,5 @@
|
||||
//golangcitest:args -Eerrchkjson
|
||||
//golangcitest:config_path testdata/configs/errchkjson.yml
|
||||
//golangcitest:config_path testdata/errchkjson.yml
|
||||
package testdata
|
||||
|
||||
import (
|
@ -1,5 +1,5 @@
|
||||
//golangcitest:args -Eerrchkjson
|
||||
//golangcitest:config_path testdata/configs/errchkjson_check_error_free_encoding.yml
|
||||
//golangcitest:config_path testdata/errchkjson_check_error_free_encoding.yml
|
||||
package testdata
|
||||
|
||||
import (
|
@ -1,5 +1,5 @@
|
||||
//golangcitest:args -Eerrchkjson
|
||||
//golangcitest:config_path testdata/configs/errchkjson_no_exported.yml
|
||||
//golangcitest:config_path testdata/errchkjson_no_exported.yml
|
||||
package testdata
|
||||
|
||||
import (
|
@ -1,4 +1,4 @@
|
||||
package golinters
|
||||
package errname
|
||||
|
||||
import (
|
||||
"github.com/Antonboom/errname/pkg/analyzer"
|
||||
@ -7,7 +7,7 @@ import (
|
||||
"github.com/golangci/golangci-lint/pkg/goanalysis"
|
||||
)
|
||||
|
||||
func NewErrName() *goanalysis.Linter {
|
||||
func New() *goanalysis.Linter {
|
||||
a := analyzer.New()
|
||||
|
||||
return goanalysis.NewLinter(
|
11
pkg/golinters/errname/errname_integration_test.go
Normal file
11
pkg/golinters/errname/errname_integration_test.go
Normal file
@ -0,0 +1,11 @@
|
||||
package errname
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/golangci/golangci-lint/test/testshared/integration"
|
||||
)
|
||||
|
||||
func TestFromTestdata(t *testing.T) {
|
||||
integration.RunTestdata(t)
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
package golinters
|
||||
package errorlint
|
||||
|
||||
import (
|
||||
"github.com/polyfloyd/go-errorlint/errorlint"
|
||||
@ -8,7 +8,7 @@ import (
|
||||
"github.com/golangci/golangci-lint/pkg/goanalysis"
|
||||
)
|
||||
|
||||
func NewErrorLint(cfg *config.ErrorLintSettings) *goanalysis.Linter {
|
||||
func New(cfg *config.ErrorLintSettings) *goanalysis.Linter {
|
||||
a := errorlint.NewAnalyzer()
|
||||
|
||||
cfgMap := map[string]map[string]any{}
|
11
pkg/golinters/errorlint/errorlint_integration_test.go
Normal file
11
pkg/golinters/errorlint/errorlint_integration_test.go
Normal file
@ -0,0 +1,11 @@
|
||||
package errorlint
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/golangci/golangci-lint/test/testshared/integration"
|
||||
)
|
||||
|
||||
func TestFromTestdata(t *testing.T) {
|
||||
integration.RunTestdata(t)
|
||||
}
|
@ -1,5 +1,5 @@
|
||||
//golangcitest:args -Eerrorlint
|
||||
//golangcitest:config_path testdata/configs/errorlint_asserts.yml
|
||||
//golangcitest:config_path testdata/errorlint_asserts.yml
|
||||
package testdata
|
||||
|
||||
import (
|
@ -1,5 +1,5 @@
|
||||
//golangcitest:args -Eerrorlint
|
||||
//golangcitest:config_path testdata/configs/errorlint_comparison.yml
|
||||
//golangcitest:config_path testdata/errorlint_comparison.yml
|
||||
package testdata
|
||||
|
||||
import (
|
@ -1,5 +1,5 @@
|
||||
//golangcitest:args -Eerrorlint
|
||||
//golangcitest:config_path testdata/configs/errorlint_errorf.yml
|
||||
//golangcitest:config_path testdata/errorlint_errorf.yml
|
||||
package testdata
|
||||
|
||||
import (
|
@ -1,4 +1,4 @@
|
||||
package golinters
|
||||
package execinquery
|
||||
|
||||
import (
|
||||
"github.com/lufeee/execinquery"
|
||||
@ -7,7 +7,7 @@ import (
|
||||
"github.com/golangci/golangci-lint/pkg/goanalysis"
|
||||
)
|
||||
|
||||
func NewExecInQuery() *goanalysis.Linter {
|
||||
func New() *goanalysis.Linter {
|
||||
a := execinquery.Analyzer
|
||||
|
||||
return goanalysis.NewLinter(
|
11
pkg/golinters/execinquery/execinquery_integration_test.go
Normal file
11
pkg/golinters/execinquery/execinquery_integration_test.go
Normal file
@ -0,0 +1,11 @@
|
||||
package execinquery
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/golangci/golangci-lint/test/testshared/integration"
|
||||
)
|
||||
|
||||
func TestFromTestdata(t *testing.T) {
|
||||
integration.RunTestdata(t)
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
package golinters
|
||||
package exhaustive
|
||||
|
||||
import (
|
||||
"github.com/nishanths/exhaustive"
|
||||
@ -8,7 +8,7 @@ import (
|
||||
"github.com/golangci/golangci-lint/pkg/goanalysis"
|
||||
)
|
||||
|
||||
func NewExhaustive(settings *config.ExhaustiveSettings) *goanalysis.Linter {
|
||||
func New(settings *config.ExhaustiveSettings) *goanalysis.Linter {
|
||||
a := exhaustive.Analyzer
|
||||
|
||||
var cfg map[string]map[string]any
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user