github.com/yoheimuta/protolint@v0.49.8-0.20240515023657-4ecaebb7575d/linter/visitor/baseAddVisitor.go (about) 1 package visitor 2 3 import ( 4 "github.com/yoheimuta/go-protoparser/v4/parser" 5 "github.com/yoheimuta/go-protoparser/v4/parser/meta" 6 7 "github.com/yoheimuta/protolint/linter/report" 8 ) 9 10 // BaseAddVisitor represents a base visitor which can accumulate failures. 11 type BaseAddVisitor struct { 12 BaseVisitor 13 ruleID string 14 severity string 15 failures []report.Failure 16 } 17 18 // NewBaseAddVisitor creates a BaseAddVisitor. 19 func NewBaseAddVisitor(ruleID string, severity string) *BaseAddVisitor { 20 return &BaseAddVisitor{ 21 ruleID: ruleID, 22 severity: severity, 23 } 24 } 25 26 // Failures returns the accumulated failures. 27 func (v *BaseAddVisitor) Failures() []report.Failure { 28 return v.failures 29 } 30 31 // AddFailuref adds to the internal buffer and the formatting works like fmt.Sprintf. 32 func (v *BaseAddVisitor) AddFailuref( 33 pos meta.Position, 34 format string, 35 a ...interface{}, 36 ) { 37 v.failures = append(v.failures, report.FailureWithSeverityf(pos, v.ruleID, v.severity, format, a...)) 38 } 39 40 // AddFailurefWithProtoMeta adds to the internal buffer and the formatting works like fmt.Sprintf. 41 func (v *BaseAddVisitor) AddFailurefWithProtoMeta( 42 p *parser.ProtoMeta, 43 format string, 44 a ...interface{}, 45 ) { 46 v.AddFailuref( 47 meta.Position{ 48 Filename: p.Filename, 49 Offset: 0, 50 Line: 1, 51 Column: 1, 52 }, 53 format, 54 a..., 55 ) 56 }