checker

package
v1.0.0 Latest Latest
Warning

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

Go to latest
Published: May 15, 2023 License: MIT Imports: 12 Imported by: 0

Documentation

Index

Constants

View Source
const (
	Strings string = "string"
	Bytes   string = "[]byte"
)

Variables

This section is empty.

Functions

func WrapPrint added in v0.2.0

func WrapPrint(fSet *token.FileSet) func(ast.Node) []byte

func WrapType added in v0.2.0

func WrapType(info *types.Info) func(node ast.Expr) string

Types

type Checker

type Checker struct {
	Violations []Violation           // List of available violations
	Packages   map[string][]int      // Storing indexes of Violations per pkg/kg.Struct
	Type       func(ast.Expr) string // Type Checker closure.
	Print      func(ast.Node) []byte // String representation of the expresion.
}

Checker will perform standart check on package and its methods.

func New

func New(violations ...[]Violation) Checker

func (*Checker) Handle added in v0.2.0

func (c *Checker) Handle(v *Violation, ce *ast.CallExpr) (map[int]ast.Expr, bool)

func (*Checker) Match added in v0.2.0

func (c *Checker) Match(pkgName, name string) *Violation

Match will check the available violations we got from checks against the `name` caller from package `pkgName`.

type Generate

type Generate struct {
	PreCondition string // Precondition we want to be generated
	Pattern      string // Generate pattern (for the `want` message)
	Returns      int    // Expected to return n elements
}

Tests (generation) related struct.

type GolangIssue added in v0.2.0

type GolangIssue struct {
	Start     token.Position
	End       token.Position
	Message   string
	InlineFix string
	Original  string
}

type Import

type Import struct {
	Pkg  string // package name
	Name string // alias
}

Imports represents an imported package in a nice for lookup way...

examples:
import . "bytes"    -> checker.Import{Pkg:"bytes", Val:"."}
import name "bytes" -> checker.Import{Pkg:"bytes", Val:"name"}

type Imports

type Imports map[string][]Import

func Load

func Load(fs *token.FileSet, ins *inspector.Inspector) Imports

func (Imports) Lookup

func (i Imports) Lookup(file, pkg string) (string, bool)

type Violation

type Violation struct {
	Type ViolationType //
	Args []int         // Indexes of the arguments needs to be checked

	Targets    string
	Package    string
	AltPackage string
	Struct     string
	Caller     string
	AltCaller  string

	// --- tests generation information
	Generate *Generate
	// contains filtered or unexported fields
}

Violation describs what message we going to give to a particular code violation

func (*Violation) Diagnostic

func (v *Violation) Diagnostic(fSet *token.FileSet) analysis.Diagnostic

func (*Violation) Issue added in v0.2.0

func (v *Violation) Issue(fSet *token.FileSet) GolangIssue

Issue inteanded to be used only with golangci-lint, bu you can use use it alongside Diagnostic if you wish.

func (*Violation) Message

func (v *Violation) Message() string

func (*Violation) With added in v0.2.0

func (v *Violation) With(base []byte, e *ast.CallExpr, args map[int]ast.Expr) *Violation

type ViolationType

type ViolationType int

Type of violation: can be method or function

const (
	Function ViolationType = iota + 1
	Method
)

Jump to

Keyboard shortcuts

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