2018-06-02 11:36:50 +03:00
|
|
|
package linter
|
|
|
|
|
|
|
|
import (
|
2020-01-28 16:04:43 +09:00
|
|
|
"go/ast"
|
|
|
|
|
2018-10-21 17:06:51 +03:00
|
|
|
"golang.org/x/tools/go/packages"
|
2019-09-30 16:19:41 +03:00
|
|
|
|
2019-09-17 08:42:16 +03:00
|
|
|
"github.com/golangci/golangci-lint/internal/pkgcache"
|
2018-10-28 18:47:56 +03:00
|
|
|
"github.com/golangci/golangci-lint/pkg/config"
|
2019-10-01 14:52:00 +03:00
|
|
|
"github.com/golangci/golangci-lint/pkg/fsutils"
|
2024-03-26 20:55:39 +01:00
|
|
|
"github.com/golangci/golangci-lint/pkg/goanalysis/load"
|
2018-10-28 18:47:56 +03:00
|
|
|
"github.com/golangci/golangci-lint/pkg/logutils"
|
2018-06-02 11:36:50 +03:00
|
|
|
)
|
|
|
|
|
|
|
|
type Context struct {
|
2019-09-09 16:48:15 +03:00
|
|
|
// Packages are deduplicated (test and normal packages) packages
|
|
|
|
Packages []*packages.Package
|
|
|
|
|
|
|
|
// OriginalPackages aren't deduplicated: they contain both normal and test
|
|
|
|
// version for each of packages
|
|
|
|
OriginalPackages []*packages.Package
|
|
|
|
|
2019-06-09 17:30:45 +03:00
|
|
|
Cfg *config.Config
|
|
|
|
FileCache *fsutils.FileCache
|
|
|
|
Log logutils.Log
|
2019-09-17 08:42:16 +03:00
|
|
|
|
2019-09-30 16:19:41 +03:00
|
|
|
PkgCache *pkgcache.Cache
|
|
|
|
LoadGuard *load.Guard
|
2018-06-02 11:36:50 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
func (c *Context) Settings() *config.LintersSettings {
|
|
|
|
return &c.Cfg.LintersSettings
|
|
|
|
}
|
2020-01-28 16:04:43 +09:00
|
|
|
|
|
|
|
func (c *Context) ClearTypesInPackages() {
|
|
|
|
for _, p := range c.Packages {
|
|
|
|
clearTypes(p)
|
|
|
|
}
|
|
|
|
for _, p := range c.OriginalPackages {
|
|
|
|
clearTypes(p)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func clearTypes(p *packages.Package) {
|
|
|
|
p.Types = nil
|
|
|
|
p.TypesInfo = nil
|
|
|
|
p.Syntax = []*ast.File{}
|
|
|
|
}
|