From 62668d41d087e2710f89bcce581dfd114e91d0d4 Mon Sep 17 00:00:00 2001 From: Ludovic Fernandez Date: Thu, 20 May 2021 01:17:02 +0200 Subject: [PATCH] revive: improve 'exported' rule output. (#1994) --- pkg/golinters/revive.go | 39 ++++++++++++++++++++++++--------------- 1 file changed, 24 insertions(+), 15 deletions(-) diff --git a/pkg/golinters/revive.go b/pkg/golinters/revive.go index 7119a472a180..cdeab270ddf6 100644 --- a/pkg/golinters/revive.go +++ b/pkg/golinters/revive.go @@ -112,21 +112,7 @@ func NewRevive(cfg *config.ReviveSettings) *goanalysis.Linter { } for i := range results { - issues = append(issues, goanalysis.NewIssue(&result.Issue{ - Severity: string(results[i].Severity), - Text: fmt.Sprintf("%s: %s", results[i].RuleName, results[i].Failure.Failure), - Pos: token.Position{ - Filename: results[i].Position.Start.Filename, - Line: results[i].Position.Start.Line, - Offset: results[i].Position.Start.Offset, - Column: results[i].Position.Start.Column, - }, - LineRange: &result.Range{ - From: results[i].Position.Start.Line, - To: results[i].Position.End.Line, - }, - FromLinter: reviveName, - }, pass)) + issues = append(issues, reviveToIssue(pass, &results[i])) } return nil, nil @@ -136,6 +122,29 @@ func NewRevive(cfg *config.ReviveSettings) *goanalysis.Linter { }).WithLoadMode(goanalysis.LoadModeSyntax) } +func reviveToIssue(pass *analysis.Pass, object *jsonObject) goanalysis.Issue { + lineRangeTo := object.Position.End.Line + if object.RuleName == (&rule.ExportedRule{}).Name() { + lineRangeTo = object.Position.Start.Line + } + + return goanalysis.NewIssue(&result.Issue{ + Severity: string(object.Severity), + Text: fmt.Sprintf("%s: %s", object.RuleName, object.Failure.Failure), + Pos: token.Position{ + Filename: object.Position.Start.Filename, + Line: object.Position.Start.Line, + Offset: object.Position.Start.Offset, + Column: object.Position.Start.Column, + }, + LineRange: &result.Range{ + From: object.Position.Start.Line, + To: lineRangeTo, + }, + FromLinter: reviveName, + }, pass) +} + // This function mimics the GetConfig function of revive. // This allow to get default values and right types. // https://github.com/golangci/golangci-lint/issues/1745