Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Checker ¶
type Checker struct { // Info is an info object that was used to instantiate this checker. Info *CheckerInfo // contains filtered or unexported fields }
Checker is an implementation of a check that is described by the associated info.
func NewChecker ¶
func NewChecker(ctx *Context, info *CheckerInfo) *Checker
NewChecker returns initialized checker identified by an info. info must be non-nil. Panics if info describes a checker that was not properly registered.
type CheckerCollection ¶
type CheckerCollection struct { // URL is a link for a main source of information on the collection. URL string }
CheckerCollection provides additional information for a group of checkers.
func (*CheckerCollection) AddChecker ¶
func (coll *CheckerCollection) AddChecker(info *CheckerInfo, constructor func(*CheckerContext) FileWalker)
AddChecker registers a new checker into a checkers pool. Constructor is used to create a new checker instance. Checker name (defined in CheckerInfo.Name) must be unique.
CheckerInfo.Collection is automatically set to the coll (the receiver).
If checker is never needed, for example if it is disabled, constructor will not be called.
type CheckerContext ¶
type CheckerContext struct { *Context // contains filtered or unexported fields }
CheckerContext is checker-local context copy. Fields that are not from Context itself are writeable.
type CheckerInfo ¶
type CheckerInfo struct { // Name is a checker name. Name string // Tags is a list of labels that can be used to enable or disable checker. // Common tags are "experimental" and "performance". Tags []string // Params declares checker-specific parameters. Optional. Params CheckerParams // Summary is a short one sentence description. // Should not end with a period. Summary string // Details extends summary with additional info. Optional. Details string // Before is a code snippet of code that will violate rule. Before string // After is a code snippet of fixed code that complies to the rule. After string // Note is an optional caution message or advice. Note string // Collection establishes a checker-to-collection relationship. Collection *CheckerCollection }
CheckerInfo holds checker metadata and structured documentation.
func GetCheckersInfo ¶
func GetCheckersInfo() []*CheckerInfo
GetCheckersInfo returns a checkers info list for all registered checkers. The slice is sorted by a checker name.
Info objects can be used to instantiate checkers with NewChecker function.
func (*CheckerInfo) HasTag ¶
func (info *CheckerInfo) HasTag(tag string) bool
HasTag reports whether checker described by the info has specified tag.
type CheckerParam ¶
type CheckerParam struct { // Value holds parameter bound value. // It might be overwritten by the integrating linter. // // Permitted types include: // - int // - bool // - string Value interface{} // Usage gives an overview about what parameter does. Usage string }
CheckerParam describes a single checker customizable parameter.
type CheckerParams ¶
type CheckerParams map[string]*CheckerParam
CheckerParams holds all checker-specific parameters.
Provides convenient access to the loosely typed underlying map.
func (CheckerParams) Bool ¶
func (params CheckerParams) Bool(pname string) bool
Bool lookups pname key in underlying map and type-asserts it to bool.
func (CheckerParams) Int ¶
func (params CheckerParams) Int(pname string) int
Int lookups pname key in underlying map and type-asserts it to int.
func (CheckerParams) String ¶
func (params CheckerParams) String(pname string) string
String lookups pname key in underlying map and type-asserts it to string.
type Context ¶
type Context struct { // TypesInfo carries parsed packages types information. TypesInfo *types.Info // SizesInfo carries alignment and type size information. // Arch-dependent. SizesInfo types.Sizes // FileSet is a file set that was used during the program loading. FileSet *token.FileSet // Pkg describes package that is being checked. Pkg *types.Package // Filename is a currently checked file name. Filename string // Require records what optional resources are required // by the checkers set that use this context. // // Every require fields makes associated context field // to be properly initialized. // For example, Context.require.PkgObjects => Context.PkgObjects. Require struct { PkgObjects bool PkgRenames bool } // PkgObjects stores all imported packages and their local names. PkgObjects map[*types.PkgName]string // PkgRenames maps package path to its local renaming. // Contains no entries for packages that were imported without // explicit local names. PkgRenames map[string]string }
Context is a readonly state shared among every checker.
func NewContext ¶
NewContext returns new shared context to be used by every checker.
All data carried by the context is readonly for checkers, but can be modified by the integrating application.
func (*Context) SetFileInfo ¶
SetFileInfo sets file-related metadata.
Must be called for every source code file being checked.
type FileWalker ¶
FileWalker is an interface every checker should implement.
The WalkFile method is executed for every Go file inside the package that is being checked.