golangci-lint/assets/linters-info.json
golangci-releaser e35fa39729
docs: update documentation assets (#4545)
Co-authored-by: Fernandez Ludovic <ldez@users.noreply.github.com>
2024-03-20 01:05:17 +01:00

1507 lines
36 KiB
JSON

[
{
"name": "asasalint",
"desc": "check for pass []any as any in variadic func(...any)",
"loadMode": 575,
"inPresets": [
"bugs"
],
"originalURL": "https://github.com/alingse/asasalint",
"internal": false,
"isSlow": true,
"since": "1.47.0"
},
{
"name": "asciicheck",
"desc": "checks that all code identifiers does not have non-ASCII symbols in the name",
"loadMode": 7,
"inPresets": [
"bugs",
"style"
],
"originalURL": "https://github.com/tdakkota/asciicheck",
"internal": false,
"isSlow": false,
"since": "v1.26.0"
},
{
"name": "bidichk",
"desc": "Checks for dangerous unicode character sequences",
"loadMode": 7,
"inPresets": [
"bugs"
],
"originalURL": "https://github.com/breml/bidichk",
"internal": false,
"isSlow": false,
"since": "1.43.0"
},
{
"name": "bodyclose",
"desc": "checks whether HTTP response body is closed successfully",
"loadMode": 575,
"inPresets": [
"performance",
"bugs"
],
"originalURL": "https://github.com/timakin/bodyclose",
"internal": false,
"isSlow": true,
"since": "v1.18.0"
},
{
"name": "containedctx",
"desc": "containedctx is a linter that detects struct contained context.Context field",
"loadMode": 575,
"inPresets": [
"style"
],
"originalURL": "https://github.com/sivchari/containedctx",
"internal": false,
"isSlow": true,
"since": "1.44.0"
},
{
"name": "contextcheck",
"desc": "check whether the function uses a non-inherited context",
"loadMode": 575,
"inPresets": [
"bugs"
],
"originalURL": "https://github.com/kkHAIKE/contextcheck",
"internal": false,
"isSlow": true,
"since": "v1.43.0"
},
{
"name": "copyloopvar",
"desc": "copyloopvar is a linter detects places where loop variables are copied",
"loadMode": 7,
"inPresets": [
"style"
],
"originalURL": "https://github.com/karamaru-alpha/copyloopvar",
"internal": false,
"isSlow": false,
"since": "v1.57.0"
},
{
"name": "cyclop",
"desc": "checks function and package cyclomatic complexity",
"loadMode": 575,
"inPresets": [
"complexity"
],
"originalURL": "https://github.com/bkielbasa/cyclop",
"internal": false,
"isSlow": true,
"since": "v1.37.0"
},
{
"name": "decorder",
"desc": "check declaration order and count of types, constants, variables and functions",
"loadMode": 7,
"inPresets": [
"format",
"style"
],
"originalURL": "https://gitlab.com/bosi/decorder",
"internal": false,
"isSlow": false,
"since": "v1.44.0"
},
{
"name": "deadcode",
"desc": "Deprecated",
"loadMode": 575,
"inPresets": [
"unused"
],
"originalURL": "https://github.com/remyoudompheng/go-misc/tree/master/deadcode",
"internal": false,
"isSlow": true,
"since": "v1.0.0",
"deprecation": {
"since": "v1.49.0",
"message": "The owner seems to have abandoned the linter.",
"replacement": "unused"
}
},
{
"name": "depguard",
"desc": "Go linter that checks if package imports are in a list of acceptable packages",
"loadMode": 7,
"inPresets": [
"style",
"import",
"module"
],
"originalURL": "https://github.com/OpenPeeDeeP/depguard",
"internal": false,
"isSlow": false,
"since": "v1.4.0"
},
{
"name": "dogsled",
"desc": "Checks assignments with too many blank identifiers (e.g. x, _, _, _, := f())",
"loadMode": 7,
"inPresets": [
"style"
],
"originalURL": "https://github.com/alexkohler/dogsled",
"internal": false,
"isSlow": false,
"since": "v1.19.0"
},
{
"name": "dupl",
"desc": "Tool for code clone detection",
"loadMode": 7,
"inPresets": [
"style"
],
"originalURL": "https://github.com/mibk/dupl",
"internal": false,
"isSlow": false,
"since": "v1.0.0"
},
{
"name": "dupword",
"desc": "checks for duplicate words in the source code",
"loadMode": 7,
"inPresets": [
"comment"
],
"originalURL": "https://github.com/Abirdcfly/dupword",
"internal": false,
"isSlow": false,
"since": "1.50.0"
},
{
"name": "durationcheck",
"desc": "check for two durations multiplied together",
"loadMode": 575,
"inPresets": [
"bugs"
],
"originalURL": "https://github.com/charithe/durationcheck",
"internal": false,
"isSlow": true,
"since": "v1.37.0"
},
{
"name": "errcheck",
"desc": "errcheck is a program for checking for unchecked errors in Go code. These unchecked errors can be critical bugs in some cases",
"enabledByDefault": true,
"loadMode": 575,
"inPresets": [
"bugs",
"error"
],
"originalURL": "https://github.com/kisielk/errcheck",
"internal": false,
"isSlow": true,
"since": "v1.0.0"
},
{
"name": "errchkjson",
"desc": "Checks types passed to the json encoding functions. Reports unsupported types and reports occations, where the check for the returned error can be omitted.",
"loadMode": 575,
"inPresets": [
"bugs"
],
"originalURL": "https://github.com/breml/errchkjson",
"internal": false,
"isSlow": true,
"since": "1.44.0"
},
{
"name": "errname",
"desc": "Checks that sentinel errors are prefixed with the `Err` and error types are suffixed with the `Error`.",
"loadMode": 575,
"inPresets": [
"style"
],
"originalURL": "https://github.com/Antonboom/errname",
"internal": false,
"isSlow": true,
"since": "v1.42.0"
},
{
"name": "errorlint",
"desc": "errorlint is a linter for that can be used to find code that will cause problems with the error wrapping scheme introduced in Go 1.13.",
"loadMode": 575,
"inPresets": [
"bugs",
"error"
],
"originalURL": "https://github.com/polyfloyd/go-errorlint",
"internal": false,
"isSlow": true,
"since": "v1.32.0"
},
{
"name": "execinquery",
"desc": "execinquery is a linter about query string checker in Query function which reads your Go src files and warning it finds",
"loadMode": 575,
"inPresets": [
"sql"
],
"originalURL": "https://github.com/lufeee/execinquery",
"internal": false,
"isSlow": true,
"since": "v1.46.0"
},
{
"name": "exhaustive",
"desc": "check exhaustiveness of enum switch statements",
"loadMode": 575,
"inPresets": [
"bugs"
],
"originalURL": "https://github.com/nishanths/exhaustive",
"internal": false,
"isSlow": true,
"since": " v1.28.0"
},
{
"name": "exhaustivestruct",
"desc": "Deprecated",
"loadMode": 575,
"inPresets": [
"style",
"test"
],
"originalURL": "https://github.com/mbilski/exhaustivestruct",
"internal": false,
"isSlow": true,
"since": "v1.32.0",
"deprecation": {
"since": "v1.46.0",
"message": "The repository of the linter has been deprecated by the owner.",
"replacement": "exhaustruct"
}
},
{
"name": "exhaustruct",
"desc": "Checks if all structure fields are initialized",
"loadMode": 575,
"inPresets": [
"style",
"test"
],
"originalURL": "https://github.com/GaijinEntertainment/go-exhaustruct",
"internal": false,
"isSlow": true,
"since": "v1.46.0"
},
{
"name": "exportloopref",
"desc": "checks for pointers to enclosing loop variables",
"loadMode": 575,
"inPresets": [
"bugs"
],
"originalURL": "https://github.com/kyoh86/exportloopref",
"internal": false,
"isSlow": true,
"since": "v1.28.0"
},
{
"name": "forbidigo",
"desc": "Forbids identifiers",
"loadMode": 575,
"inPresets": [
"style"
],
"originalURL": "https://github.com/ashanbrown/forbidigo",
"internal": false,
"isSlow": true,
"since": "v1.34.0"
},
{
"name": "forcetypeassert",
"desc": "finds forced type assertions",
"loadMode": 7,
"inPresets": [
"style"
],
"originalURL": "https://github.com/gostaticanalysis/forcetypeassert",
"internal": false,
"isSlow": false,
"since": "v1.38.0"
},
{
"name": "funlen",
"desc": "Tool for detection of long functions",
"loadMode": 7,
"inPresets": [
"complexity"
],
"originalURL": "https://github.com/ultraware/funlen",
"internal": false,
"isSlow": false,
"since": "v1.18.0"
},
{
"name": "gci",
"desc": "Gci controls Go package import order and makes it always deterministic.",
"loadMode": 7,
"inPresets": [
"format",
"import"
],
"originalURL": "https://github.com/daixiang0/gci",
"internal": false,
"isSlow": false,
"since": "v1.30.0"
},
{
"name": "ginkgolinter",
"desc": "enforces standards of using ginkgo and gomega",
"loadMode": 575,
"inPresets": [
"style"
],
"originalURL": "https://github.com/nunnatsa/ginkgolinter",
"internal": false,
"isSlow": true,
"since": "v1.51.0"
},
{
"name": "gocheckcompilerdirectives",
"desc": "Checks that go compiler directive comments (//go:) are valid.",
"loadMode": 7,
"inPresets": [
"bugs"
],
"originalURL": "https://github.com/leighmcculloch/gocheckcompilerdirectives",
"internal": false,
"isSlow": false,
"since": "v1.51.0"
},
{
"name": "gochecknoglobals",
"desc": "Check that no global variables exist.",
"loadMode": 575,
"inPresets": [
"style"
],
"originalURL": "https://github.com/leighmcculloch/gochecknoglobals",
"internal": false,
"isSlow": true,
"since": "v1.12.0"
},
{
"name": "gochecknoinits",
"desc": "Checks that no init functions are present in Go code",
"loadMode": 7,
"inPresets": [
"style"
],
"internal": false,
"isSlow": false,
"since": "v1.12.0"
},
{
"name": "gochecksumtype",
"desc": "Run exhaustiveness checks on Go \"sum types\"",
"loadMode": 575,
"inPresets": [
"bugs"
],
"originalURL": "https://github.com/alecthomas/go-check-sumtype",
"internal": false,
"isSlow": true,
"since": "v1.55.0"
},
{
"name": "gocognit",
"desc": "Computes and checks the cognitive complexity of functions",
"loadMode": 7,
"inPresets": [
"complexity"
],
"originalURL": "https://github.com/uudashr/gocognit",
"internal": false,
"isSlow": false,
"since": "v1.20.0"
},
{
"name": "goconst",
"desc": "Finds repeated strings that could be replaced by a constant",
"loadMode": 7,
"inPresets": [
"style"
],
"originalURL": "https://github.com/jgautheron/goconst",
"internal": false,
"isSlow": false,
"since": "v1.0.0"
},
{
"name": "gocritic",
"desc": "Provides diagnostics that check for bugs, performance and style issues.\nExtensible without recompilation through dynamic rules.\nDynamic rules are written declaratively with AST patterns, filters, report message and optional suggestion.",
"loadMode": 575,
"inPresets": [
"style",
"metalinter"
],
"originalURL": "https://github.com/go-critic/go-critic",
"internal": false,
"isSlow": true,
"since": "v1.12.0"
},
{
"name": "gocyclo",
"desc": "Computes and checks the cyclomatic complexity of functions",
"loadMode": 7,
"inPresets": [
"complexity"
],
"originalURL": "https://github.com/fzipp/gocyclo",
"internal": false,
"isSlow": false,
"since": "v1.0.0"
},
{
"name": "godot",
"desc": "Check if comments end in a period",
"loadMode": 7,
"inPresets": [
"style",
"comment"
],
"originalURL": "https://github.com/tetafro/godot",
"internal": false,
"canAutoFix": true,
"isSlow": false,
"since": "v1.25.0"
},
{
"name": "godox",
"desc": "Tool for detection of FIXME, TODO and other comment keywords",
"loadMode": 7,
"inPresets": [
"style",
"comment"
],
"originalURL": "https://github.com/matoous/godox",
"internal": false,
"isSlow": false,
"since": "v1.19.0"
},
{
"name": "goerr113",
"desc": "Go linter to check the errors handling expressions",
"loadMode": 575,
"inPresets": [
"style",
"error"
],
"originalURL": "https://github.com/Djarvur/go-err113",
"internal": false,
"isSlow": true,
"since": "v1.26.0"
},
{
"name": "gofmt",
"desc": "Gofmt checks whether code was gofmt-ed. By default this tool runs with -s option to check for code simplification",
"loadMode": 7,
"inPresets": [
"format"
],
"originalURL": "https://pkg.go.dev/cmd/gofmt",
"internal": false,
"canAutoFix": true,
"isSlow": false,
"since": "v1.0.0"
},
{
"name": "gofumpt",
"desc": "Gofumpt checks whether code was gofumpt-ed.",
"loadMode": 7,
"inPresets": [
"format"
],
"originalURL": "https://github.com/mvdan/gofumpt",
"internal": false,
"canAutoFix": true,
"isSlow": false,
"since": "v1.28.0"
},
{
"name": "goheader",
"desc": "Checks is file header matches to pattern",
"loadMode": 7,
"inPresets": [
"style"
],
"originalURL": "https://github.com/denis-tingaikin/go-header",
"internal": false,
"isSlow": false,
"since": "v1.28.0"
},
{
"name": "goimports",
"desc": "Check import statements are formatted according to the 'goimport' command. Reformat imports in autofix mode.",
"loadMode": 7,
"inPresets": [
"format",
"import"
],
"originalURL": "https://pkg.go.dev/golang.org/x/tools/cmd/goimports",
"internal": false,
"canAutoFix": true,
"isSlow": false,
"since": "v1.20.0"
},
{
"name": "golint",
"desc": "Deprecated",
"loadMode": 575,
"inPresets": [
"style"
],
"originalURL": "https://github.com/golang/lint",
"internal": false,
"isSlow": true,
"since": "v1.0.0",
"deprecation": {
"since": "v1.41.0",
"message": "The repository of the linter has been archived by the owner.",
"replacement": "revive"
}
},
{
"name": "gomnd",
"desc": "An analyzer to detect magic numbers.",
"loadMode": 7,
"inPresets": [
"style"
],
"originalURL": "https://github.com/tommy-muehle/go-mnd",
"internal": false,
"isSlow": false,
"since": "v1.22.0"
},
{
"name": "gomoddirectives",
"desc": "Manage the use of 'replace', 'retract', and 'excludes' directives in go.mod.",
"loadMode": 7,
"inPresets": [
"style",
"module"
],
"originalURL": "https://github.com/ldez/gomoddirectives",
"internal": false,
"isSlow": false,
"since": "v1.39.0"
},
{
"name": "gomodguard",
"desc": "Allow and block list linter for direct Go module dependencies. This is different from depguard where there are different block types for example version constraints and module recommendations.",
"loadMode": 7,
"inPresets": [
"style",
"import",
"module"
],
"originalURL": "https://github.com/ryancurrah/gomodguard",
"internal": false,
"isSlow": false,
"since": "v1.25.0"
},
{
"name": "goprintffuncname",
"desc": "Checks that printf-like functions are named with `f` at the end.",
"loadMode": 7,
"inPresets": [
"style"
],
"originalURL": "https://github.com/jirfag/go-printf-func-name",
"internal": false,
"isSlow": false,
"since": "v1.23.0"
},
{
"name": "gosec",
"desc": "Inspects source code for security problems",
"loadMode": 575,
"inPresets": [
"bugs"
],
"alternativeNames": [
"gas"
],
"originalURL": "https://github.com/securego/gosec",
"internal": false,
"isSlow": true,
"since": "v1.0.0"
},
{
"name": "gosimple",
"desc": "Linter for Go source code that specializes in simplifying code",
"enabledByDefault": true,
"loadMode": 575,
"inPresets": [
"style"
],
"alternativeNames": [
"megacheck"
],
"originalURL": "https://github.com/dominikh/go-tools/tree/master/simple",
"internal": false,
"isSlow": true,
"since": "v1.20.0"
},
{
"name": "gosmopolitan",
"desc": "Report certain i18n/l10n anti-patterns in your Go codebase",
"loadMode": 575,
"inPresets": [
"bugs"
],
"originalURL": "https://github.com/xen0n/gosmopolitan",
"internal": false,
"isSlow": true,
"since": "v1.53.0"
},
{
"name": "govet",
"desc": "Vet examines Go source code and reports suspicious constructs. It is roughly the same as 'go vet' and uses its passes.",
"enabledByDefault": true,
"loadMode": 575,
"inPresets": [
"bugs",
"metalinter"
],
"alternativeNames": [
"vet",
"vetshadow"
],
"originalURL": "https://pkg.go.dev/cmd/vet",
"internal": false,
"isSlow": true,
"since": "v1.0.0"
},
{
"name": "grouper",
"desc": "Analyze expression groups.",
"loadMode": 7,
"inPresets": [
"style"
],
"originalURL": "https://github.com/leonklingele/grouper",
"internal": false,
"isSlow": false,
"since": "v1.44.0"
},
{
"name": "ifshort",
"desc": "Deprecated",
"loadMode": 7,
"inPresets": [
"style"
],
"originalURL": "https://github.com/esimonov/ifshort",
"internal": false,
"isSlow": false,
"since": "v1.36.0",
"deprecation": {
"since": "v1.48.0",
"message": "The repository of the linter has been deprecated by the owner."
}
},
{
"name": "importas",
"desc": "Enforces consistent import aliases",
"loadMode": 575,
"inPresets": [
"style"
],
"originalURL": "https://github.com/julz/importas",
"internal": false,
"isSlow": true,
"since": "v1.38.0"
},
{
"name": "inamedparam",
"desc": "reports interfaces with unnamed method parameters",
"loadMode": 7,
"inPresets": [
"style"
],
"originalURL": "https://github.com/macabu/inamedparam",
"internal": false,
"isSlow": false,
"since": "v1.55.0"
},
{
"name": "ineffassign",
"desc": "Detects when assignments to existing variables are not used",
"enabledByDefault": true,
"loadMode": 7,
"inPresets": [
"unused"
],
"originalURL": "https://github.com/gordonklaus/ineffassign",
"internal": false,
"isSlow": false,
"since": "v1.0.0"
},
{
"name": "interfacebloat",
"desc": "A linter that checks the number of methods inside an interface.",
"loadMode": 7,
"inPresets": [
"style"
],
"originalURL": "https://github.com/sashamelentyev/interfacebloat",
"internal": false,
"isSlow": false,
"since": "v1.49.0"
},
{
"name": "interfacer",
"desc": "Deprecated",
"loadMode": 575,
"inPresets": [
"style"
],
"originalURL": "https://github.com/mvdan/interfacer",
"internal": false,
"isSlow": true,
"since": "v1.0.0",
"deprecation": {
"since": "v1.38.0",
"message": "The repository of the linter has been archived by the owner."
}
},
{
"name": "intrange",
"desc": "intrange is a linter to find places where for loops could make use of an integer range.",
"loadMode": 7,
"originalURL": "https://github.com/ckaznocha/intrange",
"internal": false,
"isSlow": false,
"since": "v1.57.0"
},
{
"name": "ireturn",
"desc": "Accept Interfaces, Return Concrete Types",
"loadMode": 575,
"inPresets": [
"style"
],
"originalURL": "https://github.com/butuzov/ireturn",
"internal": false,
"isSlow": true,
"since": "v1.43.0"
},
{
"name": "lll",
"desc": "Reports long lines",
"loadMode": 7,
"inPresets": [
"style"
],
"internal": false,
"isSlow": false,
"since": "v1.8.0"
},
{
"name": "loggercheck",
"desc": "Checks key value pairs for common logger libraries (kitlog,klog,logr,zap).",
"loadMode": 575,
"inPresets": [
"style",
"bugs"
],
"alternativeNames": [
"logrlint"
],
"originalURL": "https://github.com/timonwong/loggercheck",
"internal": false,
"isSlow": true,
"since": "v1.49.0"
},
{
"name": "maintidx",
"desc": "maintidx measures the maintainability index of each function.",
"loadMode": 7,
"inPresets": [
"complexity"
],
"originalURL": "https://github.com/yagipy/maintidx",
"internal": false,
"isSlow": false,
"since": "v1.44.0"
},
{
"name": "makezero",
"desc": "Finds slice declarations with non-zero initial length",
"loadMode": 575,
"inPresets": [
"style",
"bugs"
],
"originalURL": "https://github.com/ashanbrown/makezero",
"internal": false,
"isSlow": true,
"since": "v1.34.0"
},
{
"name": "maligned",
"desc": "Deprecated",
"loadMode": 575,
"inPresets": [
"performance"
],
"originalURL": "https://github.com/mdempsky/maligned",
"internal": false,
"isSlow": true,
"since": "v1.0.0",
"deprecation": {
"since": "v1.38.0",
"message": "The repository of the linter has been archived by the owner.",
"replacement": "govet 'fieldalignment'"
}
},
{
"name": "mirror",
"desc": "reports wrong mirror patterns of bytes/strings usage",
"loadMode": 575,
"inPresets": [
"style"
],
"originalURL": "https://github.com/butuzov/mirror",
"internal": false,
"isSlow": true,
"since": "v1.53.0"
},
{
"name": "misspell",
"desc": "Finds commonly misspelled English words",
"loadMode": 7,
"inPresets": [
"style",
"comment"
],
"originalURL": "https://github.com/client9/misspell",
"internal": false,
"canAutoFix": true,
"isSlow": false,
"since": "v1.8.0"
},
{
"name": "musttag",
"desc": "enforce field tags in (un)marshaled structs",
"loadMode": 575,
"inPresets": [
"style",
"bugs"
],
"originalURL": "https://github.com/go-simpler/musttag",
"internal": false,
"isSlow": true,
"since": "v1.51.0"
},
{
"name": "nakedret",
"desc": "Checks that functions with naked returns are not longer than a maximum size (can be zero).",
"loadMode": 7,
"inPresets": [
"style"
],
"originalURL": "https://github.com/alexkohler/nakedret",
"internal": false,
"isSlow": false,
"since": "v1.19.0"
},
{
"name": "nestif",
"desc": "Reports deeply nested if statements",
"loadMode": 7,
"inPresets": [
"complexity"
],
"originalURL": "https://github.com/nakabonne/nestif",
"internal": false,
"isSlow": false,
"since": "v1.25.0"
},
{
"name": "nilerr",
"desc": "Finds the code that returns nil even if it checks that the error is not nil.",
"loadMode": 575,
"inPresets": [
"bugs"
],
"originalURL": "https://github.com/gostaticanalysis/nilerr",
"internal": false,
"isSlow": true,
"since": "v1.38.0"
},
{
"name": "nilnil",
"desc": "Checks that there is no simultaneous return of `nil` error and an invalid value.",
"loadMode": 575,
"inPresets": [
"style"
],
"originalURL": "https://github.com/Antonboom/nilnil",
"internal": false,
"isSlow": true,
"since": "v1.43.0"
},
{
"name": "nlreturn",
"desc": "nlreturn checks for a new line before return and branch statements to increase code clarity",
"loadMode": 7,
"inPresets": [
"style"
],
"originalURL": "https://github.com/ssgreg/nlreturn",
"internal": false,
"isSlow": false,
"since": "v1.30.0"
},
{
"name": "noctx",
"desc": "Finds sending http request without context.Context",
"loadMode": 575,
"inPresets": [
"performance",
"bugs"
],
"originalURL": "https://github.com/sonatard/noctx",
"internal": false,
"isSlow": true,
"since": "v1.28.0"
},
{
"name": "nonamedreturns",
"desc": "Reports all named returns",
"loadMode": 575,
"inPresets": [
"style"
],
"originalURL": "https://github.com/firefart/nonamedreturns",
"internal": false,
"isSlow": true,
"since": "v1.46.0"
},
{
"name": "nosnakecase",
"desc": "Deprecated",
"loadMode": 7,
"inPresets": [
"style"
],
"originalURL": "https://github.com/sivchari/nosnakecase",
"internal": false,
"isSlow": false,
"since": "v1.47.0",
"deprecation": {
"since": "v1.48.1",
"message": "The repository of the linter has been deprecated by the owner.",
"replacement": "revive 'var-naming'"
}
},
{
"name": "nosprintfhostport",
"desc": "Checks for misuse of Sprintf to construct a host with port in a URL.",
"loadMode": 7,
"inPresets": [
"style"
],
"originalURL": "https://github.com/stbenjam/no-sprintf-host-port",
"internal": false,
"isSlow": false,
"since": "v1.46.0"
},
{
"name": "paralleltest",
"desc": "Detects missing usage of t.Parallel() method in your Go test",
"loadMode": 575,
"inPresets": [
"style",
"test"
],
"originalURL": "https://github.com/kunwardeep/paralleltest",
"internal": false,
"isSlow": true,
"since": "v1.33.0"
},
{
"name": "perfsprint",
"desc": "Checks that fmt.Sprintf can be replaced with a faster alternative.",
"loadMode": 575,
"inPresets": [
"performance"
],
"originalURL": "https://github.com/catenacyber/perfsprint",
"internal": false,
"isSlow": true,
"since": "v1.55.0"
},
{
"name": "prealloc",
"desc": "Finds slice declarations that could potentially be pre-allocated",
"loadMode": 7,
"inPresets": [
"performance"
],
"originalURL": "https://github.com/alexkohler/prealloc",
"internal": false,
"isSlow": false,
"since": "v1.19.0"
},
{
"name": "predeclared",
"desc": "find code that shadows one of Go's predeclared identifiers",
"loadMode": 7,
"inPresets": [
"style"
],
"originalURL": "https://github.com/nishanths/predeclared",
"internal": false,
"isSlow": false,
"since": "v1.35.0"
},
{
"name": "promlinter",
"desc": "Check Prometheus metrics naming via promlint",
"loadMode": 7,
"inPresets": [
"style"
],
"originalURL": "https://github.com/yeya24/promlinter",
"internal": false,
"isSlow": false,
"since": "v1.40.0"
},
{
"name": "protogetter",
"desc": "Reports direct reads from proto message fields when getters should be used",
"loadMode": 575,
"inPresets": [
"bugs"
],
"originalURL": "https://github.com/ghostiam/protogetter",
"internal": false,
"canAutoFix": true,
"isSlow": true,
"since": "v1.55.0"
},
{
"name": "reassign",
"desc": "Checks that package variables are not reassigned",
"loadMode": 575,
"inPresets": [
"bugs"
],
"originalURL": "https://github.com/curioswitch/go-reassign",
"internal": false,
"isSlow": true,
"since": "1.49.0"
},
{
"name": "revive",
"desc": "Fast, configurable, extensible, flexible, and beautiful linter for Go. Drop-in replacement of golint.",
"loadMode": 7,
"inPresets": [
"style",
"metalinter"
],
"originalURL": "https://github.com/mgechev/revive",
"internal": false,
"isSlow": true,
"since": "v1.37.0"
},
{
"name": "rowserrcheck",
"desc": "checks whether Rows.Err of rows is checked successfully",
"loadMode": 575,
"inPresets": [
"bugs",
"sql"
],
"originalURL": "https://github.com/jingyugao/rowserrcheck",
"internal": false,
"isSlow": true,
"since": "v1.23.0"
},
{
"name": "sloglint",
"desc": "ensure consistent code style when using log/slog",
"loadMode": 575,
"inPresets": [
"style",
"format"
],
"originalURL": "https://github.com/go-simpler/sloglint",
"internal": false,
"isSlow": true,
"since": "v1.55.0"
},
{
"name": "scopelint",
"desc": "Deprecated",
"loadMode": 7,
"inPresets": [
"bugs"
],
"originalURL": "https://github.com/kyoh86/scopelint",
"internal": false,
"isSlow": false,
"since": "v1.12.0",
"deprecation": {
"since": "v1.39.0",
"message": "The repository of the linter has been deprecated by the owner.",
"replacement": "exportloopref"
}
},
{
"name": "sqlclosecheck",
"desc": "Checks that sql.Rows, sql.Stmt, sqlx.NamedStmt, pgx.Query are closed.",
"loadMode": 575,
"inPresets": [
"bugs",
"sql"
],
"originalURL": "https://github.com/ryanrolds/sqlclosecheck",
"internal": false,
"isSlow": true,
"since": "v1.28.0"
},
{
"name": "spancheck",
"desc": "Checks for mistakes with OpenTelemetry/Census spans.",
"loadMode": 575,
"inPresets": [
"bugs"
],
"originalURL": "https://github.com/jjti/go-spancheck",
"internal": false,
"isSlow": true,
"since": "v1.56.0"
},
{
"name": "staticcheck",
"desc": "It's a set of rules from staticcheck. It's not the same thing as the staticcheck binary. The author of staticcheck doesn't support or approve the use of staticcheck as a library inside golangci-lint.",
"enabledByDefault": true,
"loadMode": 575,
"inPresets": [
"bugs",
"metalinter"
],
"alternativeNames": [
"megacheck"
],
"originalURL": "https://staticcheck.io/",
"internal": false,
"isSlow": true,
"since": "v1.0.0"
},
{
"name": "structcheck",
"desc": "Deprecated",
"loadMode": 575,
"inPresets": [
"unused"
],
"originalURL": "https://github.com/opennota/check",
"internal": false,
"isSlow": true,
"since": "v1.0.0",
"deprecation": {
"since": "v1.49.0",
"message": "The owner seems to have abandoned the linter.",
"replacement": "unused"
}
},
{
"name": "stylecheck",
"desc": "Stylecheck is a replacement for golint",
"loadMode": 575,
"inPresets": [
"style"
],
"originalURL": "https://github.com/dominikh/go-tools/tree/master/stylecheck",
"internal": false,
"isSlow": true,
"since": "v1.20.0"
},
{
"name": "tagalign",
"desc": "check that struct tags are well aligned",
"loadMode": 7,
"inPresets": [
"style",
"format"
],
"originalURL": "https://github.com/4meepo/tagalign",
"internal": false,
"canAutoFix": true,
"isSlow": false,
"since": "v1.53.0"
},
{
"name": "tagliatelle",
"desc": "Checks the struct tags.",
"loadMode": 7,
"inPresets": [
"style"
],
"originalURL": "https://github.com/ldez/tagliatelle",
"internal": false,
"isSlow": false,
"since": "v1.40.0"
},
{
"name": "tenv",
"desc": "tenv is analyzer that detects using os.Setenv instead of t.Setenv since Go1.17",
"loadMode": 575,
"inPresets": [
"style"
],
"originalURL": "https://github.com/sivchari/tenv",
"internal": false,
"isSlow": true,
"since": "v1.43.0"
},
{
"name": "testableexamples",
"desc": "linter checks if examples are testable (have an expected output)",
"loadMode": 7,
"inPresets": [
"test"
],
"originalURL": "https://github.com/maratori/testableexamples",
"internal": false,
"isSlow": false,
"since": "v1.50.0"
},
{
"name": "testifylint",
"desc": "Checks usage of github.com/stretchr/testify.",
"loadMode": 575,
"inPresets": [
"test",
"bugs"
],
"originalURL": "https://github.com/Antonboom/testifylint",
"internal": false,
"isSlow": true,
"since": "v1.55.0"
},
{
"name": "testpackage",
"desc": "linter that makes you use a separate _test package",
"loadMode": 7,
"inPresets": [
"style",
"test"
],
"originalURL": "https://github.com/maratori/testpackage",
"internal": false,
"isSlow": false,
"since": "v1.25.0"
},
{
"name": "thelper",
"desc": "thelper detects tests helpers which is not start with t.Helper() method.",
"loadMode": 575,
"inPresets": [
"style"
],
"originalURL": "https://github.com/kulti/thelper",
"internal": false,
"isSlow": true,
"since": "v1.34.0"
},
{
"name": "tparallel",
"desc": "tparallel detects inappropriate usage of t.Parallel() method in your Go test codes.",
"loadMode": 575,
"inPresets": [
"style",
"test"
],
"originalURL": "https://github.com/moricho/tparallel",
"internal": false,
"isSlow": true,
"since": "v1.32.0"
},
{
"name": "typecheck",
"desc": "Like the front-end of a Go compiler, parses and type-checks Go code",
"enabledByDefault": true,
"loadMode": 575,
"inPresets": [
"bugs"
],
"internal": true,
"isSlow": true,
"since": "v1.3.0"
},
{
"name": "unconvert",
"desc": "Remove unnecessary type conversions",
"loadMode": 575,
"inPresets": [
"style"
],
"originalURL": "https://github.com/mdempsky/unconvert",
"internal": false,
"isSlow": true,
"since": "v1.0.0"
},
{
"name": "unparam",
"desc": "Reports unused function parameters",
"loadMode": 575,
"inPresets": [
"unused"
],
"originalURL": "https://github.com/mvdan/unparam",
"internal": false,
"isSlow": true,
"since": "v1.9.0"
},
{
"name": "unused",
"desc": "Checks Go code for unused constants, variables, functions and types",
"enabledByDefault": true,
"loadMode": 575,
"inPresets": [
"unused"
],
"alternativeNames": [
"megacheck"
],
"originalURL": "https://github.com/dominikh/go-tools/tree/master/unused",
"internal": false,
"isSlow": true,
"doesChangeTypes": true,
"since": "v1.20.0"
},
{
"name": "usestdlibvars",
"desc": "A linter that detect the possibility to use variables/constants from the Go standard library.",
"loadMode": 7,
"inPresets": [
"style"
],
"originalURL": "https://github.com/sashamelentyev/usestdlibvars",
"internal": false,
"isSlow": false,
"since": "v1.48.0"
},
{
"name": "varcheck",
"desc": "Deprecated",
"loadMode": 575,
"inPresets": [
"unused"
],
"originalURL": "https://github.com/opennota/check",
"internal": false,
"isSlow": true,
"since": "v1.0.0",
"deprecation": {
"since": "v1.49.0",
"message": "The owner seems to have abandoned the linter.",
"replacement": "unused"
}
},
{
"name": "varnamelen",
"desc": "checks that the length of a variable's name matches its scope",
"loadMode": 575,
"inPresets": [
"style"
],
"originalURL": "https://github.com/blizzy78/varnamelen",
"internal": false,
"isSlow": true,
"since": "v1.43.0"
},
{
"name": "wastedassign",
"desc": "Finds wasted assignment statements",
"loadMode": 575,
"inPresets": [
"style"
],
"originalURL": "https://github.com/sanposhiho/wastedassign",
"internal": false,
"isSlow": true,
"since": "v1.38.0"
},
{
"name": "whitespace",
"desc": "Whitespace is a linter that checks for unnecessary newlines at the start and end of functions, if, for, etc.",
"loadMode": 7,
"inPresets": [
"style"
],
"originalURL": "https://github.com/ultraware/whitespace",
"internal": false,
"canAutoFix": true,
"isSlow": false,
"since": "v1.19.0"
},
{
"name": "wrapcheck",
"desc": "Checks that errors returned from external packages are wrapped",
"loadMode": 575,
"inPresets": [
"style",
"error"
],
"originalURL": "https://github.com/tomarrell/wrapcheck",
"internal": false,
"isSlow": true,
"since": "v1.32.0"
},
{
"name": "wsl",
"desc": "add or remove empty lines",
"loadMode": 7,
"inPresets": [
"style"
],
"originalURL": "https://github.com/bombsimon/wsl",
"internal": false,
"isSlow": false,
"since": "v1.20.0"
},
{
"name": "zerologlint",
"desc": "Detects the wrong usage of `zerolog` that a user forgets to dispatch with `Send` or `Msg`",
"loadMode": 575,
"inPresets": [
"bugs"
],
"originalURL": "https://github.com/ykadowak/zerologlint",
"internal": false,
"isSlow": true,
"since": "v1.53.0"
},
{
"name": "nolintlint",
"desc": "Reports ill-formed or insufficient nolint directives",
"loadMode": 7,
"inPresets": [
"style"
],
"originalURL": "https://github.com/golangci/golangci-lint/blob/master/pkg/golinters/nolintlint/README.md",
"internal": false,
"isSlow": false,
"since": "v1.26.0"
}
]