88 lines
2.5 KiB
Go
88 lines
2.5 KiB
Go
package golinters
|
|
|
|
import (
|
|
"golang.org/x/tools/go/analysis"
|
|
|
|
"github.com/golangci/golangci-lint/pkg/config"
|
|
|
|
"github.com/golangci/golangci-lint/pkg/golinters/goanalysis"
|
|
|
|
// analysis plug-ins
|
|
"golang.org/x/tools/go/analysis/passes/asmdecl"
|
|
"golang.org/x/tools/go/analysis/passes/assign"
|
|
"golang.org/x/tools/go/analysis/passes/atomic"
|
|
"golang.org/x/tools/go/analysis/passes/atomicalign"
|
|
"golang.org/x/tools/go/analysis/passes/bools"
|
|
"golang.org/x/tools/go/analysis/passes/buildtag"
|
|
"golang.org/x/tools/go/analysis/passes/cgocall"
|
|
"golang.org/x/tools/go/analysis/passes/composite"
|
|
"golang.org/x/tools/go/analysis/passes/copylock"
|
|
"golang.org/x/tools/go/analysis/passes/httpresponse"
|
|
"golang.org/x/tools/go/analysis/passes/loopclosure"
|
|
"golang.org/x/tools/go/analysis/passes/lostcancel"
|
|
"golang.org/x/tools/go/analysis/passes/nilfunc"
|
|
"golang.org/x/tools/go/analysis/passes/printf"
|
|
"golang.org/x/tools/go/analysis/passes/shadow"
|
|
"golang.org/x/tools/go/analysis/passes/shift"
|
|
"golang.org/x/tools/go/analysis/passes/stdmethods"
|
|
"golang.org/x/tools/go/analysis/passes/structtag"
|
|
"golang.org/x/tools/go/analysis/passes/tests"
|
|
"golang.org/x/tools/go/analysis/passes/unmarshal"
|
|
"golang.org/x/tools/go/analysis/passes/unreachable"
|
|
"golang.org/x/tools/go/analysis/passes/unsafeptr"
|
|
"golang.org/x/tools/go/analysis/passes/unusedresult"
|
|
|
|
"github.com/golangci/golangci-lint/pkg/golinters/goanalysis/passes/nilness"
|
|
)
|
|
|
|
func NewGovet(cfg *config.GovetSettings) *goanalysis.Linter {
|
|
analyzers := []*analysis.Analyzer{
|
|
// the traditional vet suite:
|
|
asmdecl.Analyzer,
|
|
assign.Analyzer,
|
|
atomic.Analyzer,
|
|
atomicalign.Analyzer,
|
|
bools.Analyzer,
|
|
buildtag.Analyzer,
|
|
cgocall.Analyzer,
|
|
composite.Analyzer,
|
|
copylock.Analyzer,
|
|
httpresponse.Analyzer,
|
|
loopclosure.Analyzer,
|
|
lostcancel.Analyzer,
|
|
nilfunc.Analyzer,
|
|
printf.Analyzer,
|
|
shift.Analyzer,
|
|
stdmethods.Analyzer,
|
|
structtag.Analyzer,
|
|
tests.Analyzer,
|
|
unmarshal.Analyzer,
|
|
unreachable.Analyzer,
|
|
unsafeptr.Analyzer,
|
|
unusedresult.Analyzer,
|
|
|
|
// for debugging:
|
|
// findcall.Analyzer,
|
|
// pkgfact.Analyzer,
|
|
|
|
// uses SSA:
|
|
nilness.Analyzer,
|
|
}
|
|
|
|
var settings map[string]map[string]interface{}
|
|
if cfg != nil {
|
|
if cfg.CheckShadowing {
|
|
analyzers = append(analyzers, shadow.Analyzer)
|
|
}
|
|
settings = cfg.Settings
|
|
}
|
|
|
|
return goanalysis.NewLinter(
|
|
"govet",
|
|
"Vet examines Go source code and reports suspicious constructs, "+
|
|
"such as Printf calls whose arguments do not align with the format string",
|
|
analyzers,
|
|
settings,
|
|
)
|
|
}
|