mirror of
https://github.com/woodpecker-ci/woodpecker.git
synced 2024-12-03 15:16:29 +00:00
82fd65665f
bidichk checks for dangerous unicode character sequences (https://github.com/golangci/golangci-lint/pull/2330)
112 lines
1.9 KiB
Go
112 lines
1.9 KiB
Go
package ir
|
|
|
|
import (
|
|
"fmt"
|
|
"strings"
|
|
)
|
|
|
|
type File struct {
|
|
PkgPath string
|
|
|
|
RuleGroups []RuleGroup
|
|
|
|
CustomDecls []string
|
|
|
|
BundleImports []BundleImport
|
|
}
|
|
|
|
type BundleImport struct {
|
|
Line int
|
|
|
|
PkgPath string
|
|
Prefix string
|
|
}
|
|
|
|
type RuleGroup struct {
|
|
Line int
|
|
Name string
|
|
MatcherName string
|
|
|
|
DocTags []string
|
|
DocSummary string
|
|
DocBefore string
|
|
DocAfter string
|
|
DocNote string
|
|
|
|
Imports []PackageImport
|
|
|
|
Rules []Rule
|
|
}
|
|
|
|
type PackageImport struct {
|
|
Path string
|
|
Name string
|
|
}
|
|
|
|
type Rule struct {
|
|
Line int
|
|
|
|
SyntaxPatterns []PatternString
|
|
CommentPatterns []PatternString
|
|
|
|
ReportTemplate string
|
|
SuggestTemplate string
|
|
|
|
WhereExpr FilterExpr
|
|
|
|
LocationVar string
|
|
}
|
|
|
|
type PatternString struct {
|
|
Line int
|
|
Value string
|
|
}
|
|
|
|
// stringer -type=FilterOp -trimprefix=Filter
|
|
|
|
//go:generate go run ./gen_filter_op.go
|
|
type FilterOp int
|
|
|
|
func (op FilterOp) String() string { return filterOpNames[op] }
|
|
|
|
type FilterExpr struct {
|
|
Line int
|
|
|
|
Op FilterOp
|
|
Src string
|
|
Value interface{}
|
|
Args []FilterExpr
|
|
}
|
|
|
|
func (e FilterExpr) IsValid() bool { return e.Op != FilterInvalidOp }
|
|
|
|
func (e FilterExpr) IsBinaryExpr() bool { return filterOpFlags[e.Op]&flagIsBinaryExpr != 0 }
|
|
func (e FilterExpr) IsBasicLit() bool { return filterOpFlags[e.Op]&flagIsBasicLit != 0 }
|
|
func (e FilterExpr) HasVar() bool { return filterOpFlags[e.Op]&flagHasVar != 0 }
|
|
|
|
func (e FilterExpr) String() string {
|
|
switch e.Op {
|
|
case FilterStringOp:
|
|
return `"` + e.Value.(string) + `"`
|
|
case FilterIntOp:
|
|
return fmt.Sprint(e.Value.(int64))
|
|
}
|
|
parts := make([]string, 0, len(e.Args)+2)
|
|
parts = append(parts, e.Op.String())
|
|
if e.Value != nil {
|
|
parts = append(parts, fmt.Sprintf("[%#v]", e.Value))
|
|
}
|
|
for _, arg := range e.Args {
|
|
parts = append(parts, arg.String())
|
|
}
|
|
if len(parts) == 1 {
|
|
return parts[0]
|
|
}
|
|
return "(" + strings.Join(parts, " ") + ")"
|
|
}
|
|
|
|
const (
|
|
flagIsBinaryExpr uint64 = 1 << iota
|
|
flagIsBasicLit
|
|
flagHasVar
|
|
)
|