feat: add warning about disabled and deprecated linters (level 2) (#4742)
This commit is contained in:
parent
b9868e1643
commit
08deff4225
@ -47,8 +47,11 @@ A linter can be deprecated for various reasons, e.g. the linter stops working wi
|
|||||||
|
|
||||||
The deprecation of a linter will follow 3 phases:
|
The deprecation of a linter will follow 3 phases:
|
||||||
|
|
||||||
1. **Display of a warning message**: The linter can still be used (unless it's completely non-functional), but it's recommended to remove it from your configuration.
|
1. **Display of a warning message**: The linter can still be used (unless it's completely non-functional),
|
||||||
2. **Display of an error message**: At this point, you should remove the linter. The original implementation is replaced by a placeholder that does nothing.
|
but it's recommended to remove it from your configuration.
|
||||||
|
2. **Display of an error message**: At this point, you should remove the linter.
|
||||||
|
The original implementation is replaced by a placeholder that does nothing.
|
||||||
|
The linter is NOT enabled when using `enable-all` and should be removed from the `disable` option.
|
||||||
3. **Removal of the linter** from golangci-lint.
|
3. **Removal of the linter** from golangci-lint.
|
||||||
|
|
||||||
Each phase corresponds to a minor version:
|
Each phase corresponds to a minor version:
|
||||||
|
@ -8,6 +8,7 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/golangci/golangci-lint/pkg/config"
|
"github.com/golangci/golangci-lint/pkg/config"
|
||||||
|
"github.com/golangci/golangci-lint/pkg/lint/linter"
|
||||||
"github.com/golangci/golangci-lint/pkg/logutils"
|
"github.com/golangci/golangci-lint/pkg/logutils"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -38,17 +39,30 @@ func (v Validator) Validate(cfg *config.Config) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (v Validator) validateLintersNames(cfg *config.Linters) error {
|
func (v Validator) validateLintersNames(cfg *config.Linters) error {
|
||||||
allNames := cfg.Enable
|
|
||||||
allNames = append(allNames, cfg.Disable...)
|
|
||||||
|
|
||||||
var unknownNames []string
|
var unknownNames []string
|
||||||
|
|
||||||
for _, name := range allNames {
|
for _, name := range cfg.Enable {
|
||||||
if v.m.GetLinterConfigs(name) == nil {
|
if v.m.GetLinterConfigs(name) == nil {
|
||||||
unknownNames = append(unknownNames, name)
|
unknownNames = append(unknownNames, name)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for _, name := range cfg.Disable {
|
||||||
|
lcs := v.m.GetLinterConfigs(name)
|
||||||
|
if len(lcs) == 0 {
|
||||||
|
unknownNames = append(unknownNames, name)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, lc := range lcs {
|
||||||
|
if lc.IsDeprecated() && lc.Deprecation.Level > linter.DeprecationWarning {
|
||||||
|
v.m.log.Warnf("The linter %q is deprecated (step 2) and deactivated. "+
|
||||||
|
"It should be removed from the list of disabled linters. "+
|
||||||
|
"https://golangci-lint.run/product/roadmap/#linter-deprecation-cycle", lc.Name())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if len(unknownNames) > 0 {
|
if len(unknownNames) > 0 {
|
||||||
return fmt.Errorf("unknown linters: '%v', run 'golangci-lint help linters' to see the list of supported linters",
|
return fmt.Errorf("unknown linters: '%v', run 'golangci-lint help linters' to see the list of supported linters",
|
||||||
strings.Join(unknownNames, ","))
|
strings.Join(unknownNames, ","))
|
||||||
|
@ -100,8 +100,6 @@ func TestCgoOk(t *testing.T) {
|
|||||||
WithNoConfig().
|
WithNoConfig().
|
||||||
WithArgs("--timeout=3m",
|
WithArgs("--timeout=3m",
|
||||||
"--enable-all",
|
"--enable-all",
|
||||||
"-D",
|
|
||||||
"nosnakecase",
|
|
||||||
).
|
).
|
||||||
WithArgs("--go=1.22"). // TODO(ldez) remove this line when we will run go1.23 on the CI. (related to intrange, copyloopvar)
|
WithArgs("--go=1.22"). // TODO(ldez) remove this line when we will run go1.23 on the CI. (related to intrange, copyloopvar)
|
||||||
WithTargetPath(testdataDir, "cgo").
|
WithTargetPath(testdataDir, "cgo").
|
||||||
|
Loading…
x
Reference in New Issue
Block a user