package lint

import "honnef.co/go/tools/lint"

Package lint provides the foundation for tools like staticcheck

Index

Constants

const (
	StateInitializing = 0
	StateGraph        = 1
	StateProcessing   = 2
	StateCumulative   = 3
)

Functions

func DisplayPosition

func DisplayPosition(fset *token.FileSet, p token.Pos) token.Position

func FilterChecks

func FilterChecks(allChecks []*analysis.Analyzer, checks []string) map[string]bool

func FuncName

func FuncName(f *types.Func) string

Types

type AnalysisMeasurementKey

type AnalysisMeasurementKey struct {
	Analysis string
	Pkg      string
}

type CumulativeChecker

type CumulativeChecker interface {
	Analyzer() *analysis.Analyzer
	Result() []types.Object
	ProblemObject(*token.FileSet, types.Object) Problem
}

type Documentation

type Documentation struct {
	Title      string
	Text       string
	Since      string
	NonDefault bool
	Options    []string
}

func (*Documentation) String

func (doc *Documentation) String() string

type Fact

type Fact struct {
	Path string
	Fact analysis.Fact
}

type FileIgnore

type FileIgnore struct {
	File   string
	Checks []string
}

func (*FileIgnore) Match

func (fi *FileIgnore) Match(p Problem) bool

type Ignore

type Ignore interface {
	Match(p Problem) bool
}

type LineIgnore

type LineIgnore struct {
	File    string
	Line    int
	Checks  []string
	Matched bool
	Pos     token.Position
}

func (*LineIgnore) Match

func (li *LineIgnore) Match(p Problem) bool

func (*LineIgnore) String

func (li *LineIgnore) String() string

type Linter

type Linter struct {
	Checkers           []*analysis.Analyzer
	CumulativeCheckers []CumulativeChecker
	GoVersion          int
	Config             config.Config
	Stats              Stats
	RepeatAnalyzers    uint
}

A Linter lints Go source code.

func (*Linter) Lint

func (l *Linter) Lint(cfg *packages.Config, patterns []string) ([]Problem, error)

type Package

type Package struct {
	*packages.Package
	Imports []*Package
	// contains filtered or unexported fields
}

type Problem

type Problem struct {
	Pos      token.Position
	End      token.Position
	Message  string
	Check    string
	Severity Severity
	Related  []Related
}

Problem represents a problem in some source code.

func (Problem) Equal

func (p Problem) Equal(o Problem) bool

func (*Problem) String

func (p *Problem) String() string
type Related struct {
	Pos     token.Position
	End     token.Position
	Message string
}

type Runner

type Runner struct {
	// contains filtered or unexported fields
}

func NewRunner

func NewRunner(stats *Stats) (*Runner, error)

func (*Runner) Run

func (r *Runner) Run(cfg *packages.Config, patterns []string, analyzers []*analysis.Analyzer, hasCumulative bool) ([]*Package, error)

Run loads packages corresponding to patterns and analyses them with analyzers. It returns the loaded packages, which contain reported diagnostics as well as extracted ignore directives.

Note that diagnostics have not been filtered at this point yet, to accommodate cumulative analyzes that require additional steps to produce diagnostics.

type Severity

type Severity uint8
const (
	Error Severity = iota
	Warning
	Ignored
)

type Stats

type Stats struct {
	State uint32

	InitialPackages          uint32
	TotalPackages            uint32
	ProcessedPackages        uint32
	ProcessedInitialPackages uint32
	Problems                 uint32
	ActiveWorkers            uint32
	TotalWorkers             uint32
	PrintAnalyzerMeasurement func(*analysis.Analyzer, *Package, time.Duration)
}

func (*Stats) MeasureAnalyzer

func (s *Stats) MeasureAnalyzer(analysis *analysis.Analyzer, pkg *Package, d time.Duration)

Source Files

lint.go runner.go stats.go

Directories

PathSynopsis
lint/lintdslPackage lintdsl provides helpers for implementing static analysis checks.
lint/lintutilPackage lintutil provides helpers for writing linter command lines.
lint/lintutil/formatPackage format provides formatters for linter problems.
lint/testutil
Version
v0.0.1-2020.1.5
Published
Jul 30, 2020
Platform
windows/amd64
Imports
26 packages
Last checked
6 minutes ago

Tools for package owners.