github.com/elek/golangci-lint@v1.42.2-0.20211208090441-c05b7fcb3a9a/pkg/lint/linter/context.go (about)

     1  package linter
     2  
     3  import (
     4  	"go/ast"
     5  
     6  	"golang.org/x/tools/go/packages"
     7  
     8  	"github.com/elek/golangci-lint/internal/pkgcache"
     9  	"github.com/elek/golangci-lint/pkg/config"
    10  	"github.com/elek/golangci-lint/pkg/fsutils"
    11  	"github.com/elek/golangci-lint/pkg/golinters/goanalysis/load"
    12  	"github.com/elek/golangci-lint/pkg/logutils"
    13  )
    14  
    15  type Context struct {
    16  	// Packages are deduplicated (test and normal packages) packages
    17  	Packages []*packages.Package
    18  
    19  	// OriginalPackages aren't deduplicated: they contain both normal and test
    20  	// version for each of packages
    21  	OriginalPackages []*packages.Package
    22  
    23  	Cfg       *config.Config
    24  	FileCache *fsutils.FileCache
    25  	LineCache *fsutils.LineCache
    26  	Log       logutils.Log
    27  
    28  	PkgCache  *pkgcache.Cache
    29  	LoadGuard *load.Guard
    30  }
    31  
    32  func (c *Context) Settings() *config.LintersSettings {
    33  	return &c.Cfg.LintersSettings
    34  }
    35  
    36  func (c *Context) ClearTypesInPackages() {
    37  	for _, p := range c.Packages {
    38  		clearTypes(p)
    39  	}
    40  	for _, p := range c.OriginalPackages {
    41  		clearTypes(p)
    42  	}
    43  }
    44  
    45  func clearTypes(p *packages.Package) {
    46  	p.Types = nil
    47  	p.TypesInfo = nil
    48  	p.Syntax = []*ast.File{}
    49  }