58 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			58 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
package processors
 | 
						|
 | 
						|
import "github.com/golangci/golangci-lint/pkg/result"
 | 
						|
 | 
						|
type MaxLinterIssuesPerFile struct{}
 | 
						|
 | 
						|
var _ Processor = MaxLinterIssuesPerFile{}
 | 
						|
 | 
						|
type fileToIssuesMap map[string][]result.Issue
 | 
						|
 | 
						|
func (p MaxLinterIssuesPerFile) Name() string {
 | 
						|
	return "max_issues_per_file"
 | 
						|
}
 | 
						|
 | 
						|
func (p MaxLinterIssuesPerFile) makeFileToIssuesMap(res result.Result) fileToIssuesMap {
 | 
						|
	fti := fileToIssuesMap{}
 | 
						|
	for _, i := range res.Issues {
 | 
						|
		fti[i.File] = append(fti[i.File], i)
 | 
						|
	}
 | 
						|
 | 
						|
	return fti
 | 
						|
}
 | 
						|
 | 
						|
func (p MaxLinterIssuesPerFile) processResult(res result.Result) result.Result {
 | 
						|
	if len(res.Issues) == 0 {
 | 
						|
		return res
 | 
						|
	}
 | 
						|
 | 
						|
	if res.MaxIssuesPerFile == 0 {
 | 
						|
		return res // Nothing to process
 | 
						|
	}
 | 
						|
 | 
						|
	fti := p.makeFileToIssuesMap(res)
 | 
						|
	for file, fileIssues := range fti {
 | 
						|
		if len(fileIssues) > res.MaxIssuesPerFile {
 | 
						|
			fti[file] = fileIssues[:res.MaxIssuesPerFile]
 | 
						|
		}
 | 
						|
	}
 | 
						|
 | 
						|
	filteredIssues := []result.Issue{}
 | 
						|
	for _, issues := range fti {
 | 
						|
		filteredIssues = append(filteredIssues, issues...)
 | 
						|
	}
 | 
						|
 | 
						|
	res.Issues = filteredIssues
 | 
						|
	return res
 | 
						|
}
 | 
						|
 | 
						|
func (p MaxLinterIssuesPerFile) Process(results []result.Result) ([]result.Result, error) {
 | 
						|
	newResults := []result.Result{}
 | 
						|
 | 
						|
	for _, res := range results {
 | 
						|
		newResults = append(newResults, p.processResult(res))
 | 
						|
	}
 | 
						|
 | 
						|
	return newResults, nil
 | 
						|
}
 |