github.com/vanstinator/golangci-lint@v0.0.0-20240223191551-cc572f00d9d1/pkg/result/processors/source_code.go (about) 1 package processors 2 3 import ( 4 "github.com/vanstinator/golangci-lint/pkg/fsutils" 5 "github.com/vanstinator/golangci-lint/pkg/logutils" 6 "github.com/vanstinator/golangci-lint/pkg/result" 7 ) 8 9 type SourceCode struct { 10 lineCache *fsutils.LineCache 11 log logutils.Log 12 } 13 14 var _ Processor = SourceCode{} 15 16 func NewSourceCode(lc *fsutils.LineCache, log logutils.Log) *SourceCode { 17 return &SourceCode{ 18 lineCache: lc, 19 log: log, 20 } 21 } 22 23 func (p SourceCode) Name() string { 24 return "source_code" 25 } 26 27 func (p SourceCode) Process(issues []result.Issue) ([]result.Issue, error) { 28 return transformIssues(issues, func(i *result.Issue) *result.Issue { 29 newI := *i 30 31 lineRange := i.GetLineRange() 32 for lineNumber := lineRange.From; lineNumber <= lineRange.To; lineNumber++ { 33 line, err := p.lineCache.GetLine(i.FilePath(), lineNumber) 34 if err != nil { 35 p.log.Warnf("Failed to get line %d for file %s: %s", 36 lineNumber, i.FilePath(), err) 37 return i 38 } 39 40 newI.SourceLines = append(newI.SourceLines, line) 41 } 42 43 return &newI 44 }), nil 45 } 46 47 func (p SourceCode) Finish() {}