Help us shape the future of Go! Take the 2026 Go Developer Survey

analysis

package
v1.10.6 Latest Latest
Warning

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

Go to latest
Published: Aug 18, 2026 License: Apache-2.0 Imports: 10 Imported by: 9

Documentation

Index

Constants

This section is empty.

Variables

View Source
var InspectorAnalyzer = &Analyzer{
	Run: func(pass *Pass) any {
		return ast.NewInspector(pass.Program.Program)
	},
}

Functions

This section is empty.

Types

type Analyzer

type Analyzer struct {
	Description string

	Run func(*Pass) any

	// Requires is a set of analyzers that must run before this one.
	// This analyzer may inspect the outputs produced by each analyzer in Requires.
	// The graph over analyzers implied by Requires edges must be acyclic
	Requires []*Analyzer
}

Analyzer describes an analysis function and its options

type Config

type Config struct {
	// ResolveAddressContractNames is called to resolve the contract names of an address location
	ResolveAddressContractNames func(address common.Address) ([]string, error)
	// ResolveCode is called to resolve an import to its source code
	ResolveCode func(
		location common.Location,
		importingLocation common.Location,
		importRange ast.Range,
	) ([]byte, error)
	// Mode controls the level of information returned for each program
	Mode LoadMode
	// HandleParserError is called when a parser error occurs instead of returning it
	HandleParserError func(err ParsingCheckingError, program *ast.Program) error
	// HandleCheckerError is called when a checker error occurs instead of returning it
	HandleCheckerError func(err ParsingCheckingError, checker *sema.Checker) error
	// CryptoContractElaboration is the elaboration of the Crypto contract
	CryptoContractElaboration *sema.Elaboration
	// ExtraValues returns additional standard library values to declare in the
	// base value activation for the given location, beyond the Cadence default
	// standard library values.
	ExtraValues func(location common.Location) []stdlib.StandardLibraryValue
	// ExtraTypes returns additional standard library types to declare in the
	// base type activation for the given location, beyond the default base types.
	ExtraTypes func(location common.Location) []stdlib.StandardLibraryType
}

A Config specifies details about how programs should be loaded. The zero value is a valid configuration. Calls to Load do not modify this struct.

func NewSimpleConfig

func NewSimpleConfig(
	mode LoadMode,
	codes map[common.Location][]byte,
	contractNames map[common.Address][]string,
	resolveAddressContracts func(common.Address) (contracts map[string][]byte, err error),
) *Config

type Diagnostic

type Diagnostic struct {
	Location         common.Location
	Category         string
	Message          string
	SecondaryMessage string
	Code             string // Diagnostic code (e.g. "unused-variable")
	URL              string // URL to documentation
	SuggestedFixes   []SuggestedFix
	ast.Range
}

func (Diagnostic) SuggestFixes added in v0.40.0

func (d Diagnostic) SuggestFixes(_ string) []SuggestedFix

type LoadMode

type LoadMode int

LoadMode controls the amount of detail to return when loading. The bits below can be combined to specify what information is required.

const (
	// NeedSyntax provides the AST.
	NeedSyntax LoadMode = 0

	// NeedTypes provides the elaboration.
	NeedTypes LoadMode = 1 << iota

	// NeedPositionInfo provides position information (e.g. occurrences).
	NeedPositionInfo

	// NeedExtendedElaboration provides an extended elaboration.
	NeedExtendedElaboration
)

type ParsingCheckingError

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

func (ParsingCheckingError) ChildErrors

func (e ParsingCheckingError) ChildErrors() []error

func (ParsingCheckingError) ImportLocation

func (e ParsingCheckingError) ImportLocation() common.Location

func (ParsingCheckingError) Unwrap

func (e ParsingCheckingError) Unwrap() error

type Pass

type Pass struct {
	Program *Program

	// Report reports a Diagnostic, a finding about a specific location
	// in the analyzed source code such as a potential mistake.
	// It may be called by the Analyzer.Run function.
	Report func(Diagnostic)

	// ResultOf provides the inputs to this analysis pass,
	// which are the corresponding results of its prerequisite analyzers.
	// The map keys are the elements of Analyzer.Requires.
	ResultOf map[*Analyzer]any
}

Pass provides information to the Analyzer.Run function, which applies a specific analyzer to a single location.

type Program

type Program struct {
	Location  common.Location
	Program   *ast.Program
	Checker   *sema.Checker
	Code      []byte
	LoadError error
}

func (*Program) Run

func (program *Program) Run(analyzers []*Analyzer, report func(Diagnostic))

Run runs the given DAG of analyzers in parallel

type Programs

type Programs struct {
	Programs                  map[common.Location]*Program
	CryptoContractElaboration *sema.Elaboration
	CryptoContractLocation    func() common.Location
}

func Load

func Load(config *Config, locations ...common.Location) (*Programs, error)

func (*Programs) Get added in v1.2.0

func (programs *Programs) Get(location common.Location) *Program

func (*Programs) Load

func (programs *Programs) Load(config *Config, location common.Location) error

type SuggestedFix added in v0.39.6

type SuggestedFix = errors.SuggestedFix[ast.TextEdit]

type TextEdit added in v0.39.6

type TextEdit = ast.TextEdit

Jump to

Keyboard shortcuts

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