support patch reading from env var

This commit is contained in:
golangci 2018-05-13 12:05:34 +03:00
parent 9dd2baf8bd
commit e73a876b0f
3 changed files with 11 additions and 3 deletions

View File

@ -228,6 +228,7 @@ func (e *Executor) runAnalysis(ctx context.Context, args []string) (chan result.
} }
runner := pkg.SimpleRunner{ runner := pkg.SimpleRunner{
Processors: []processors.Processor{ Processors: []processors.Processor{
processors.NewPathPrettifier(), // must be before diff processor at least
processors.NewExclude(excludeTotalPattern), processors.NewExclude(excludeTotalPattern),
processors.NewCgo(), processors.NewCgo(),
processors.NewNolint(fset), processors.NewNolint(fset),
@ -236,7 +237,6 @@ func (e *Executor) runAnalysis(ctx context.Context, args []string) (chan result.
processors.NewMaxPerFileFromLinter(), processors.NewMaxPerFileFromLinter(),
processors.NewMaxSameIssues(e.cfg.Issues.MaxSameIssues), processors.NewMaxSameIssues(e.cfg.Issues.MaxSameIssues),
processors.NewMaxFromLinter(e.cfg.Issues.MaxIssuesPerLinter), processors.NewMaxFromLinter(e.cfg.Issues.MaxIssuesPerLinter),
processors.NewPathPrettifier(),
}, },
} }

View File

@ -5,6 +5,8 @@ import (
"fmt" "fmt"
"io" "io"
"io/ioutil" "io/ioutil"
"os"
"strings"
"github.com/golangci/golangci-lint/pkg/result" "github.com/golangci/golangci-lint/pkg/result"
"github.com/golangci/revgrep" "github.com/golangci/revgrep"
@ -14,6 +16,7 @@ type Diff struct {
onlyNew bool onlyNew bool
fromRev string fromRev string
patchFilePath string patchFilePath string
patch string
} }
var _ Processor = Diff{} var _ Processor = Diff{}
@ -23,6 +26,7 @@ func NewDiff(onlyNew bool, fromRev, patchFilePath string) *Diff {
onlyNew: onlyNew, onlyNew: onlyNew,
fromRev: fromRev, fromRev: fromRev,
patchFilePath: patchFilePath, patchFilePath: patchFilePath,
patch: os.Getenv("GOLANGCI_DIFF_PROCESSOR_PATCH"),
} }
} }
@ -31,7 +35,7 @@ func (p Diff) Name() string {
} }
func (p Diff) Process(issues []result.Issue) ([]result.Issue, error) { func (p Diff) Process(issues []result.Issue) ([]result.Issue, error) {
if !p.onlyNew && p.fromRev == "" && p.patchFilePath == "" { // no need to work if !p.onlyNew && p.fromRev == "" && p.patchFilePath == "" && p.patch == "" { // no need to work
return issues, nil return issues, nil
} }
@ -42,7 +46,10 @@ func (p Diff) Process(issues []result.Issue) ([]result.Issue, error) {
return nil, fmt.Errorf("can't read from pathc file %s: %s", p.patchFilePath, err) return nil, fmt.Errorf("can't read from pathc file %s: %s", p.patchFilePath, err)
} }
patchReader = bytes.NewReader(patch) patchReader = bytes.NewReader(patch)
} else if p.patch != "" {
patchReader = strings.NewReader(p.patch)
} }
c := revgrep.Checker{ c := revgrep.Checker{
Patch: patchReader, Patch: patchReader,
RevisionFrom: p.fromRev, RevisionFrom: p.fromRev,

View File

@ -145,7 +145,8 @@ func (r *SimpleRunner) processIssues(ctx context.Context, issues []result.Issue)
newIssues, err := p.Process(issues) newIssues, err := p.Process(issues)
elapsed := time.Since(startedAt) elapsed := time.Since(startedAt)
if elapsed > 50*time.Millisecond { if elapsed > 50*time.Millisecond {
logrus.Infof("Result processor %s took %s", p.Name(), elapsed) logrus.Infof("Result processor %s took %s and transformed %d -> %d issues",
p.Name(), elapsed, len(issues), len(newIssues))
} }
if err != nil { if err != nil {
logrus.Warnf("Can't process result by %s processor: %s", p.Name(), err) logrus.Warnf("Can't process result by %s processor: %s", p.Name(), err)