Deprecate Interfacer linter (#1755)

This commit is contained in:
Sergey Vilgelm 2021-02-20 18:55:11 -06:00 committed by GitHub
parent eace6a11a9
commit 251b205f54
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 38 additions and 11 deletions

View File

@ -88,7 +88,6 @@ linters:
- gosimple
- govet
- ineffassign
- interfacer
- lll
- misspell
- nakedret
@ -113,6 +112,7 @@ linters:
# - godot
# - godox
# - goerr113
# - interfacer
# - maligned
# - nestif
# - prealloc

View File

@ -82,6 +82,11 @@ func initFlagSet(fs *pflag.FlagSet, cfg *config.Config, m *lintersdb.Manager, is
fs.StringVar(&oc.PathPrefix, "path-prefix", "", wh("Path prefix to add to output"))
hideFlag("print-welcome") // no longer used
fs.BoolVar(&cfg.InternalCmdTest, "internal-cmd-test", false, wh("Option is used only for testing golangci-lint command, don't use it"))
if err := fs.MarkHidden("internal-cmd-test"); err != nil {
panic(err)
}
// Run config
rc := &cfg.Run
fs.StringVar(&rc.ModulesDownloadMode, "modules-download-mode", "",

View File

@ -663,7 +663,8 @@ type Config struct {
Severity Severity
Version Version
InternalTest bool // Option is used only for testing golangci-lint code, don't use it
InternalCmdTest bool `mapstructure:"internal-cmd-test"` // Option is used only for testing golangci-lint command, don't use it
InternalTest bool // Option is used only for testing golangci-lint code, don't use it
}
func NewDefault() *Config {

View File

@ -22,10 +22,11 @@ type Config struct {
InPresets []string
AlternativeNames []string
OriginalURL string // URL of original (not forked) repo, needed for autogenerated README
CanAutoFix bool
IsSlow bool
DoesChangeTypes bool
OriginalURL string // URL of original (not forked) repo, needed for autogenerated README
CanAutoFix bool
IsSlow bool
DoesChangeTypes bool
DeprecatedMessage string
}
func (lc *Config) ConsiderSlow() *Config {
@ -73,6 +74,15 @@ func (lc *Config) WithChangeTypes() *Config {
return lc
}
func (lc *Config) Deprecated(message string) *Config {
lc.DeprecatedMessage = message
return lc
}
func (lc *Config) IsDeprecated() bool {
return lc.DeprecatedMessage != ""
}
func (lc *Config) AllNames() []string {
return append([]string{lc.Name()}, lc.AlternativeNames...)
}

View File

@ -177,7 +177,8 @@ func (m Manager) GetAllSupportedLinterConfigs() []*linter.Config {
linter.NewConfig(golinters.NewInterfacer()).
WithLoadForGoAnalysis().
WithPresets(linter.PresetStyle).
WithURL("https://github.com/mvdan/interfacer"),
WithURL("https://github.com/mvdan/interfacer").
Deprecated("The repository of the linter has been archived by the owner."),
linter.NewConfig(golinters.NewUnconvert()).
WithLoadForGoAnalysis().
WithPresets(linter.PresetStyle).

View File

@ -8,6 +8,7 @@ import (
"strings"
"github.com/pkg/errors"
gopackages "golang.org/x/tools/go/packages"
"github.com/golangci/golangci-lint/internal/errorutil"
"github.com/golangci/golangci-lint/pkg/config"
@ -20,8 +21,6 @@ import (
"github.com/golangci/golangci-lint/pkg/result"
"github.com/golangci/golangci-lint/pkg/result/processors"
"github.com/golangci/golangci-lint/pkg/timeutils"
gopackages "golang.org/x/tools/go/packages"
)
type Runner struct {
@ -50,6 +49,15 @@ func NewRunner(cfg *config.Config, log logutils.Log, goenv *goutil.Env, es *lint
return nil, errors.Wrap(err, "failed to get enabled linters")
}
// print deprecated messages
if !cfg.InternalCmdTest {
for name, lc := range enabledLinters {
if lc.IsDeprecated() {
log.Warnf("The linter '%s' is deprecated due to: %s", name, lc.DeprecatedMessage)
}
}
}
return &Runner{
Processors: []processors.Processor{
processors.NewCgo(goenv),

View File

@ -1,4 +1,4 @@
//args: -Einterfacer
//args: -Einterfacer --internal-cmd-test
package testdata
import "io"

View File

@ -94,7 +94,9 @@ func (r *LintRunner) Run(args ...string) *RunResult {
func (r *LintRunner) RunCommand(command string, args ...string) *RunResult {
r.Install()
runArgs := append([]string{command}, args...)
runArgs := append([]string{command}, "--internal-cmd-test")
runArgs = append(runArgs, args...)
defer func(startedAt time.Time) {
r.log.Infof("ran [../golangci-lint %s] in %s", strings.Join(runArgs, " "), time.Since(startedAt))
}(time.Now())