golangci-lint/pkg/result/processors/uniq_by_line_processor.go

39 lines
836 B
Go

package processors
import (
"fmt"
"github.com/golangci/golangci-lint/pkg/result"
)
type UniqByLineProcessor struct{}
var _ Processor = UniqByLineProcessor{}
func (p UniqByLineProcessor) Name() string {
return "uniq_by_line"
}
func (p UniqByLineProcessor) Process(results []result.Result) ([]result.Result, error) {
fli := makeFilesToLinesToIssuesMap(results)
retResults := []result.Result{}
for _, res := range results {
newRes := res
newRes.Issues = []result.Issue{}
for _, i := range res.Issues {
lineIssues := fli[i.File][i.LineNumber]
if len(lineIssues) == 0 {
return nil, fmt.Errorf("bug in by line uniqalization")
}
if lineIssues[0] == i { // Use first issue for line
newRes.Issues = append(newRes.Issues, i)
}
}
retResults = append(retResults, newRes)
}
return retResults, nil
}