lint

package
v0.4.6 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 13, 2023 License: MIT Imports: 9 Imported by: 62

Documentation

Overview

Package lint provides abstractions on top of go/analysis. These abstractions add extra information to analyzes, such as structured documentation and severities.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ExhaustiveTypeSwitch

func ExhaustiveTypeSwitch(v interface{})

ExhaustiveTypeSwitch panics when called. It can be used to ensure that type switches are exhaustive.

func Markdownify added in v0.2.0

func Markdownify(m map[string]*RawDocumentation) map[string]*Documentation

func ParseGoVersion added in v0.4.4

func ParseGoVersion(s string) (int, bool)

ParseGoVersion parses Go versions of the form 1.M, 1.M.N, or 1.M.NrcR, with an optional "go" prefix. It assumes that versions have already been verified and are valid.

Types

type Analyzer added in v0.2.0

type Analyzer struct {
	// The analyzer's documentation. Unlike go/analysis.Analyzer.Doc,
	// this field is structured, providing access to severity, options
	// etc.
	Doc      *Documentation
	Analyzer *analysis.Analyzer
}

Analyzer wraps a go/analysis.Analyzer and provides structured documentation.

func InitializeAnalyzers

func InitializeAnalyzers(docs map[string]*Documentation, analyzers map[string]*analysis.Analyzer) []*Analyzer

InitializeAnalyzers takes a map of documentation and a map of go/analysis.Analyzers and returns a slice of Analyzers. The map keys are the analyzer names.

type Directive

type Directive struct {
	Command   string
	Arguments []string
	Directive *ast.Comment
	Node      ast.Node
}

A directive is a comment of the form '//lint:<command> [arguments...]'. It represents instructions to the static analysis tool.

func ParseDirectives

func ParseDirectives(files []*ast.File, fset *token.FileSet) []Directive

ParseDirectives extracts all directives from a list of Go files.

type Documentation

type Documentation struct {
	Title string
	Text  string

	TitleMarkdown string
	TextMarkdown  string

	Before     string
	After      string
	Since      string
	NonDefault bool
	Options    []string
	Severity   Severity
	MergeIf    MergeStrategy
}

func (*Documentation) Format added in v0.3.0

func (doc *Documentation) Format(metadata bool) string

func (*Documentation) FormatMarkdown added in v0.3.0

func (doc *Documentation) FormatMarkdown(metadata bool) string

func (*Documentation) String

func (doc *Documentation) String() string

type MergeStrategy added in v0.3.0

type MergeStrategy int

MergeStrategy sets how merge mode should behave for diagnostics of an analyzer.

const (
	MergeIfAny MergeStrategy = iota
	MergeIfAll
)

type RawDocumentation added in v0.3.0

type RawDocumentation struct {
	Title      string
	Text       string
	Before     string
	After      string
	Since      string
	NonDefault bool
	Options    []string
	Severity   Severity
	MergeIf    MergeStrategy
}

type Severity added in v0.2.0

type Severity int

Severity describes the severity of diagnostics reported by an analyzer.

const (
	SeverityNone Severity = iota
	SeverityError
	SeverityDeprecated
	SeverityWarning
	SeverityInfo
	SeverityHint
)

type VersionFlag

type VersionFlag int

func (*VersionFlag) Get

func (v *VersionFlag) Get() interface{}

func (*VersionFlag) Set

func (v *VersionFlag) Set(s string) error

func (*VersionFlag) String

func (v *VersionFlag) String() string

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL