Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
45 changes: 34 additions & 11 deletions pkg/commands/run.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ import (
"github.com/golangci/golangci-lint/pkg/golinters/goanalysis/load"
"github.com/golangci/golangci-lint/pkg/goutil"
"github.com/golangci/golangci-lint/pkg/lint"
"github.com/golangci/golangci-lint/pkg/lint/linter"
"github.com/golangci/golangci-lint/pkg/lint/lintersdb"
"github.com/golangci/golangci-lint/pkg/logutils"
"github.com/golangci/golangci-lint/pkg/packages"
Expand Down Expand Up @@ -186,7 +187,7 @@ func (c *runCommand) preRunE(_ *cobra.Command, _ []string) error {

c.dbManager = dbManager

printer, err := printers.NewPrinter(c.log, c.cfg, c.reportData)
printer, err := printers.NewPrinter(c.log, &c.cfg.Output, c.reportData)
if err != nil {
return err
}
Expand Down Expand Up @@ -327,11 +328,24 @@ func (c *runCommand) runAndPrint(ctx context.Context, args []string) error {
}()
}

enabledLintersMap, err := c.dbManager.GetEnabledLintersMap()
if err != nil {
return err
}

c.printDeprecatedLinterMessages(enabledLintersMap)

issues, err := c.runAnalysis(ctx, args)
if err != nil {
return err // XXX: don't lose type
}

// Fills linters information for the JSON printer.
for _, lc := range c.dbManager.GetAllSupportedLinterConfigs() {
isEnabled := enabledLintersMap[lc.Name()] != nil
c.reportData.AddLinter(lc.Name(), isEnabled, lc.EnabledByDefault)
}

err = c.printer.Print(issues)
if err != nil {
return err
Expand All @@ -355,16 +369,6 @@ func (c *runCommand) runAnalysis(ctx context.Context, args []string) ([]result.I
return nil, err
}

enabledLintersMap, err := c.dbManager.GetEnabledLintersMap()
if err != nil {
return nil, err
}

for _, lc := range c.dbManager.GetAllSupportedLinterConfigs() {
isEnabled := enabledLintersMap[lc.Name()] != nil
c.reportData.AddLinter(lc.Name(), isEnabled, lc.EnabledByDefault)
}

lintCtx, err := c.contextLoader.Load(ctx, c.log.Child(logutils.DebugKeyLintersContext), lintersToRun)
if err != nil {
return nil, fmt.Errorf("context loading failed: %w", err)
Expand Down Expand Up @@ -397,6 +401,25 @@ func (c *runCommand) setExitCodeIfIssuesFound(issues []result.Issue) {
}
}

func (c *runCommand) printDeprecatedLinterMessages(enabledLinters map[string]*linter.Config) {
if c.cfg.InternalCmdTest {
return
}

for name, lc := range enabledLinters {
if !lc.IsDeprecated() {
continue
}

var extra string
if lc.Deprecation.Replacement != "" {
extra = fmt.Sprintf("Replaced by %s.", lc.Deprecation.Replacement)
}

c.log.Warnf("The linter '%s' is deprecated (since %s) due to: %s %s", name, lc.Deprecation.Since, lc.Deprecation.Message, extra)
}
}

func (c *runCommand) printStats(issues []result.Issue) {
if c.cfg.Run.ShowStats {
c.log.Warnf("The configuration option `run.show-stats` is deprecated, please use `output.show-stats`")
Expand Down
16 changes: 0 additions & 16 deletions pkg/lint/runner.go
Original file line number Diff line number Diff line change
Expand Up @@ -59,22 +59,6 @@ func NewRunner(log logutils.Log, cfg *config.Config, goenv *goutil.Env,
return nil, fmt.Errorf("failed to get enabled linters: %w", err)
}

// print deprecated messages
if !cfg.InternalCmdTest {
for name, lc := range enabledLinters {
if !lc.IsDeprecated() {
continue
}

var extra string
if lc.Deprecation.Replacement != "" {
extra = fmt.Sprintf("Replaced by %s.", lc.Deprecation.Replacement)
}

log.Warnf("The linter '%s' is deprecated (since %s) due to: %s %s", name, lc.Deprecation.Since, lc.Deprecation.Message, extra)
}
}

return &Runner{
Processors: []processors.Processor{
processors.NewCgo(goenv),
Expand Down
12 changes: 6 additions & 6 deletions pkg/printers/printer.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ type issuePrinter interface {

// Printer prints issues
type Printer struct {
cfg *config.Config
cfg *config.Output
reportData *report.Data

log logutils.Log
Expand All @@ -31,7 +31,7 @@ type Printer struct {
}

// NewPrinter creates a new Printer.
func NewPrinter(log logutils.Log, cfg *config.Config, reportData *report.Data) (*Printer, error) {
func NewPrinter(log logutils.Log, cfg *config.Output, reportData *report.Data) (*Printer, error) {
if log == nil {
return nil, errors.New("missing log argument in constructor")
}
Expand All @@ -53,7 +53,7 @@ func NewPrinter(log logutils.Log, cfg *config.Config, reportData *report.Data) (

// Print prints issues based on the formats defined
func (c *Printer) Print(issues []result.Issue) error {
formats := strings.Split(c.cfg.Output.Format, ",")
formats := strings.Split(c.cfg.Format, ",")

for _, item := range formats {
format, path, _ := strings.Cut(item, ":")
Expand Down Expand Up @@ -114,11 +114,11 @@ func (c *Printer) createPrinter(format string, w io.Writer) (issuePrinter, error
case config.OutFormatJSON:
p = NewJSON(c.reportData, w)
case config.OutFormatColoredLineNumber, config.OutFormatLineNumber:
p = NewText(c.cfg.Output.PrintIssuedLine,
format == config.OutFormatColoredLineNumber, c.cfg.Output.PrintLinterName,
p = NewText(c.cfg.PrintIssuedLine,
format == config.OutFormatColoredLineNumber, c.cfg.PrintLinterName,
c.log.Child(logutils.DebugKeyTextPrinter), w)
case config.OutFormatTab, config.OutFormatColoredTab:
p = NewTab(c.cfg.Output.PrintLinterName,
p = NewTab(c.cfg.PrintLinterName,
format == config.OutFormatColoredTab,
c.log.Child(logutils.DebugKeyTabPrinter), w)
case config.OutFormatCheckstyle:
Expand Down
36 changes: 13 additions & 23 deletions pkg/printers/printer_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,24 +37,20 @@ func TestPrinter_Print_stdout(t *testing.T) {

testCases := []struct {
desc string
cfg *config.Config
cfg *config.Output
expected string
}{
{
desc: "stdout (implicit)",
cfg: &config.Config{
Output: config.Output{
Format: "line-number",
},
cfg: &config.Output{
Format: "line-number",
},
expected: "golden-line-number.txt",
},
{
desc: "stdout (explicit)",
cfg: &config.Config{
Output: config.Output{
Format: "line-number:stdout",
},
cfg: &config.Output{
Format: "line-number:stdout",
},
expected: "golden-line-number.txt",
},
Expand Down Expand Up @@ -95,10 +91,8 @@ func TestPrinter_Print_stderr(t *testing.T) {
data := &report.Data{}
unmarshalFile(t, "in-report-data.json", data)

cfg := &config.Config{
Output: config.Output{
Format: "line-number:stderr",
},
cfg := &config.Output{
Format: "line-number:stderr",
}

p, err := NewPrinter(logger, cfg, data)
Expand Down Expand Up @@ -131,10 +125,8 @@ func TestPrinter_Print_file(t *testing.T) {

outputPath := filepath.Join(t.TempDir(), "report.txt")

cfg := &config.Config{
Output: config.Output{
Format: "line-number:" + outputPath,
},
cfg := &config.Output{
Format: "line-number:" + outputPath,
}

p, err := NewPrinter(logger, cfg, data)
Expand Down Expand Up @@ -172,12 +164,10 @@ func TestPrinter_Print_multiple(t *testing.T) {

outputPath := filepath.Join(t.TempDir(), "github-actions.txt")

cfg := &config.Config{
Output: config.Output{
Format: "github-actions:" + outputPath +
",json" +
",line-number:stderr",
},
cfg := &config.Output{
Format: "github-actions:" + outputPath +
",json" +
",line-number:stderr",
}

p, err := NewPrinter(logger, cfg, data)
Expand Down