lintdsl

package
v0.0.0-2019.2 Latest Latest
Warning

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

Go to latest
Published: Jun 24, 2019 License: MIT, BSD-3-Clause Imports: 13 Imported by: 0

Documentation

Overview

Package lintdsl provides helpers for implementing static analysis checks. Dot-importing this package is encouraged.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func BoolConst

func BoolConst(pass *analysis.Pass, expr ast.Expr) bool

func CallName

func CallName(call *ssa.CallCommon) string

func CallNameAST

func CallNameAST(pass *analysis.Pass, call *ast.CallExpr) string

func Dereference

func Dereference(T types.Type) types.Type

Dereference returns a pointer's element type; otherwise it returns T.

func DereferenceR

func DereferenceR(T types.Type) types.Type

DereferenceR returns a pointer's element type; otherwise it returns T. If the element type is itself a pointer, DereferenceR will be applied recursively.

func ExprToInt

func ExprToInt(pass *analysis.Pass, expr ast.Expr) (int64, bool)

func ExprToString

func ExprToString(pass *analysis.Pass, expr ast.Expr) (string, bool)

func File

func File(pass *analysis.Pass, node lint.Positioner) *ast.File

func FilterDebug

func FilterDebug(instr []ssa.Instruction) []ssa.Instruction

func Generator

func Generator(pass *analysis.Pass, pos token.Pos) (facts.Generator, bool)

Generator returns the generator that generated the file containing pos. It ignores //line directives.

func GroupSpecs

func GroupSpecs(fset *token.FileSet, specs []ast.Spec) [][]ast.Spec

func Inspect

func Inspect(node ast.Node, fn func(node ast.Node) bool)

func IsBlank

func IsBlank(id ast.Expr) bool

isBlank returns whether id is the blank identifier "_". If id == nil, the answer is false.

func IsBoolConst

func IsBoolConst(pass *analysis.Pass, expr ast.Expr) bool

func IsCallTo

func IsCallTo(call *ssa.CallCommon, name string) bool

func IsCallToAST

func IsCallToAST(pass *analysis.Pass, node ast.Node, name string) bool

func IsCallToAnyAST

func IsCallToAnyAST(pass *analysis.Pass, node ast.Node, names ...string) bool

func IsExample

func IsExample(fn *ssa.Function) bool

func IsGenerated

func IsGenerated(pass *analysis.Pass, pos token.Pos) bool

IsGenerated reports whether pos is in a generated file, It ignores //line directives.

func IsGoVersion

func IsGoVersion(pass *analysis.Pass, minor int) bool

func IsIdent

func IsIdent(expr ast.Expr, ident string) bool

func IsInMain

func IsInMain(pass *analysis.Pass, node lint.Positioner) bool

func IsInTest

func IsInTest(pass *analysis.Pass, node lint.Positioner) bool

func IsIntLiteral

func IsIntLiteral(expr ast.Expr, literal string) bool

func IsNil

func IsNil(pass *analysis.Pass, expr ast.Expr) bool

func IsObject

func IsObject(obj types.Object, name string) bool

func IsOfType

func IsOfType(pass *analysis.Pass, expr ast.Expr, name string) bool

func IsPointerLike

func IsPointerLike(T types.Type) bool

func IsType

func IsType(T types.Type, name string) bool

func IsZero deprecated

func IsZero(expr ast.Expr) bool

Deprecated: use IsIntLiteral instead

func Preamble

func Preamble(f *ast.File) string

func Render

func Render(pass *analysis.Pass, x interface{}) string

func RenderArgs

func RenderArgs(pass *analysis.Pass, args []ast.Expr) string

func ReportNodef

func ReportNodef(pass *analysis.Pass, node ast.Node, format string, args ...interface{})

func ReportNodefFG

func ReportNodefFG(pass *analysis.Pass, node ast.Node, format string, args ...interface{})

func ReportfFG

func ReportfFG(pass *analysis.Pass, pos token.Pos, f string, args ...interface{})

func SelectorName

func SelectorName(pass *analysis.Pass, expr *ast.SelectorExpr) string

Types

type Field

type Field struct {
	Var  *types.Var
	Tag  string
	Path []int
}

func FlattenFields

func FlattenFields(T *types.Struct) []Field

FlattenFields recursively flattens T and embedded structs, returning a list of fields. If multiple fields with the same name exist, all will be returned.

Jump to

Keyboard shortcuts

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