39 lines
836 B
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
|
|
}
|