From 7278b7ae8a4cd438563d33f096fee57c746b212b Mon Sep 17 00:00:00 2001 From: Denis Isaev Date: Sun, 18 Nov 2018 15:50:15 +0300 Subject: [PATCH] setup typecheck error file if it's empty --- pkg/packages/util.go | 10 ++++++++++ pkg/result/processors/autogenerated_exclude.go | 4 ++++ pkg/result/processors/nolint.go | 4 ++++ 3 files changed, 18 insertions(+) diff --git a/pkg/packages/util.go b/pkg/packages/util.go index 86b6977e..43968b51 100644 --- a/pkg/packages/util.go +++ b/pkg/packages/util.go @@ -31,6 +31,16 @@ func ExtractErrors(pkg *packages.Package) []packages.Error { } } + // some errors like "code in directory expects import" don't have Pos, set it here + if len(pkg.GoFiles) != 0 { + for i := range uniqErrors { + err := &uniqErrors[i] + if err.Pos == "" { + err.Pos = fmt.Sprintf("%s:1", pkg.GoFiles[0]) + } + } + } + return uniqErrors } diff --git a/pkg/result/processors/autogenerated_exclude.go b/pkg/result/processors/autogenerated_exclude.go index 6e6db8d5..7412f1c5 100644 --- a/pkg/result/processors/autogenerated_exclude.go +++ b/pkg/result/processors/autogenerated_exclude.go @@ -83,6 +83,10 @@ func (p *AutogeneratedExclude) getOrCreateFileSummary(i *result.Issue) (*ageFile fs = &ageFileSummary{} p.fileSummaryCache[i.FilePath()] = fs + if i.FilePath() == "" { + return nil, fmt.Errorf("no file path for issue") + } + f := p.astCache.GetOrParse(i.FilePath(), nil) if f.Err != nil { return nil, fmt.Errorf("can't parse file %s: %s", i.FilePath(), f.Err) diff --git a/pkg/result/processors/nolint.go b/pkg/result/processors/nolint.go index 6bac3956..3b091ad6 100644 --- a/pkg/result/processors/nolint.go +++ b/pkg/result/processors/nolint.go @@ -83,6 +83,10 @@ func (p *Nolint) getOrCreateFileData(i *result.Issue) (*fileData, error) { fd = &fileData{} p.cache[i.FilePath()] = fd + if i.FilePath() == "" { + return nil, fmt.Errorf("no file path for issue") + } + file := p.astCache.GetOrParse(i.FilePath(), nil) if file.Err != nil { return nil, fmt.Errorf("can't parse file %s: %s", i.FilePath(), file.Err)