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() {}