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
 | 
						|
}
 |