1
0
mirror of https://github.com/mgechev/revive.git synced 2024-11-24 08:32:22 +02:00

cleanup rules descriptions (#908)

This commit is contained in:
Marcin Federowicz 2023-09-25 06:51:12 +02:00 committed by GitHub
parent 70ceb1cbfb
commit cdb82683b1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -7,15 +7,15 @@ List of all available rules.
- [add-constant](#add-constant)
- [argument-limit](#argument-limit)
- [atomic](#atomic)
- [bare-return](#bare-return)
- [banned-characters](#banned-characters)
- [bare-return](#bare-return)
- [blank-imports](#blank-imports)
- [bool-literal-in-expr](#bool-literal-in-expr)
- [call-to-gc](#call-to-gc)
- [confusing-naming](#confusing-naming)
- [comment-spacings](#comment-spacings)
- [confusing-results](#confusing-results)
- [cognitive-complexity](#cognitive-complexity)
- [comment-spacings](#comment-spacings)
- [confusing-naming](#confusing-naming)
- [confusing-results](#confusing-results)
- [constant-logical-expr](#constant-logical-expr)
- [context-as-argument](#context-as-argument)
- [context-keys-type](#context-keys-type)
@ -28,23 +28,25 @@ List of all available rules.
- [early-return](#early-return)
- [empty-block](#empty-block)
- [empty-lines](#empty-lines)
- [enforce-map-style](#enforce-map-style)
- [enforce-slice-style](#enforce-slice-style)
- [error-naming](#error-naming)
- [error-return](#error-return)
- [error-strings](#error-strings)
- [errorf](#errorf)
- [errorf](#errorf)
- [exported](#exported)
- [file-header](#file-header)
- [flag-parameter](#flag-parameter)
- [function-result-limit](#function-result-limit)
- [function-length](#function-length)
- [function-result-limit](#function-result-limit)
- [get-return](#get-return)
- [identical-branches](#identical-branches)
- [if-return](#if-return)
- [import-alias-naming](#import-alias-naming)
- [import-shadowing](#import-shadowing)
- [imports-blacklist](#imports-blacklist)
- [increment-decrement](#increment-decrement)
- [indent-error-flow](#indent-error-flow)
- [imports-blacklist](#imports-blacklist)
- [import-shadowing](#import-shadowing)
- [import-alias-naming](#import-alias-naming)
- [line-length-limit](#line-length-limit)
- [max-public-structs](#max-public-structs)
- [modifies-parameter](#modifies-parameter)
@ -52,20 +54,19 @@ List of all available rules.
- [nested-structs](#nested-structs)
- [optimize-operands-order](#optimize-operands-order)
- [package-comments](#package-comments)
- [range](#range)
- [range-val-in-closure](#range-val-in-closure)
- [range-val-address](#range-val-address)
- [range-val-in-closure](#range-val-in-closure)
- [range](#range)
- [receiver-naming](#receiver-naming)
- [redefines-builtin-id](#redefines-builtin-id)
- [redundant-import-alias](#redundant-import-alias)
- [string-format](#string-format)
- [string-of-int](#string-of-int)
- [struct-tag](#struct-tag)
- [string-format](#string-format)
- [superfluous-else](#superfluous-else)
- [time-equal](#time-equal)
- [unchecked-type-assertion](#unchecked-type-assertion)
- [time-naming](#time-naming)
- [var-naming](#var-naming)
- [var-declaration](#var-declaration)
- [unchecked-type-assertion](#unchecked-type-assertion)
- [unconditional-recursion](#unconditional-recursion)
- [unexported-naming](#unexported-naming)
- [unexported-return](#unexported-return)
@ -76,8 +77,9 @@ List of all available rules.
- [unused-receiver](#unused-receiver)
- [use-any](#use-any)
- [useless-break](#useless-break)
- [var-declaration](#var-declaration)
- [var-naming](#var-naming)
- [waitgroup-by-value](#waitgroup-by-value)
- [redundant-import-alias](#redundant-import-alias)
## add-constant
@ -118,12 +120,6 @@ _Description_: Check for commonly mistaken usages of the `sync/atomic` package
_Configuration_: N/A
## bare-return
_Description_: Warns on bare (a.k.a. naked) returns
_Configuration_: N/A
## banned-characters
_Description_: Checks given banned characters in identifiers(func, var, const). Comments are not checked.
@ -136,6 +132,11 @@ Example:
[rule.banned-characters]
arguments =["Ω","Σ","σ"]
```
## bare-return
_Description_: Warns on bare (a.k.a. naked) returns
_Configuration_: N/A
## blank-imports
@ -333,6 +334,32 @@ _Description_: Sometimes `gofmt` is not enough to enforce a common formatting of
_Configuration_: N/A
## error-naming
_Description_: By convention, for the sake of readability, variables of type `error` must be named with the prefix `err`.
_Configuration_: N/A
## error-return
_Description_: By convention, for the sake of readability, the errors should be last in the list of returned values by a function.
_Configuration_: N/A
## error-strings
_Description_: By convention, for better readability, error messages should not be capitalized or end with punctuation or a newline.
More information [here](https://github.com/golang/go/wiki/CodeReviewComments#error-strings)
_Configuration_: N/A
## errorf
_Description_: It is possible to get a simpler program by replacing `errors.New(fmt.Sprintf())` with `fmt.Errorf()`. This rule spots that kind of simplification opportunities.
_Configuration_: N/A
## enforce-map-style
_Description_: This rule enforces consistent usage of `make(map[type]type)` or `map[type]type{}` for map initialization. It does not affect `make(map[type]type, size)` constructions as well as `map[type]type{k1: v1}`.
@ -367,31 +394,6 @@ Example:
arguments = ["make"]
```
## error-naming
_Description_: By convention, for the sake of readability, variables of type `error` must be named with the prefix `err`.
_Configuration_: N/A
## error-return
_Description_: By convention, for the sake of readability, the errors should be last in the list of returned values by a function.
_Configuration_: N/A
## error-strings
_Description_: By convention, for better readability, error messages should not be capitalized or end with punctuation or a newline.
More information [here](https://github.com/golang/go/wiki/CodeReviewComments#error-strings)
_Configuration_: N/A
## errorf
_Description_: It is possible to get a simpler program by replacing `errors.New(fmt.Sprintf())` with `fmt.Errorf()`. This rule spots that kind of simplification opportunities.
_Configuration_: N/A
## exported
@ -480,6 +482,43 @@ _Description_: Checking if an error is _nil_ to just after return the error or n
_Configuration_: N/A
## import-alias-naming
_Description_: Aligns with Go's naming conventions, as outlined in the official
[blog post](https://go.dev/blog/package-names). It enforces clear and lowercase import alias names, echoing
the principles of good package naming. Users can follow these guidelines by default or define a custom regex rule.
Importantly, aliases with underscores ("_") are always allowed.
_Configuration_: (string) regular expression to match the aliases (default: ^[a-z][a-z0-9]{0,}$)
Example:
```toml
[rule.import-alias-naming]
arguments =["^[a-z][a-z0-9]{0,}$"]
```
## import-shadowing
_Description_: In GO it is possible to declare identifiers (packages, structs,
interfaces, parameters, receivers, variables, constants...) that conflict with the
name of an imported package. This rule spots identifiers that shadow an import.
_Configuration_: N/A
## imports-blacklist
_Description_: Warns when importing black-listed packages.
_Configuration_: black-list of package names (or regular expression package names).
Example:
```toml
[imports-blacklist]
arguments =["crypto/md5", "crypto/sha1", "crypto/**/pkix"]
```
## increment-decrement
_Description_: By convention, for better readability, incrementing an integer variable by 1 is recommended to be done using the `++` operator.
@ -505,42 +544,6 @@ Example:
arguments = ["preserveScope"]
```
## imports-blacklist
_Description_: Warns when importing black-listed packages.
_Configuration_: black-list of package names (or regular expression package names).
Example:
```toml
[imports-blacklist]
arguments =["crypto/md5", "crypto/sha1", "crypto/**/pkix"]
```
## import-shadowing
_Description_: In GO it is possible to declare identifiers (packages, structs,
interfaces, parameters, receivers, variables, constants...) that conflict with the
name of an imported package. This rule spots identifiers that shadow an import.
_Configuration_: N/A
## import-alias-naming
_Description_: Aligns with Go's naming conventions, as outlined in the official
[blog post](https://go.dev/blog/package-names). It enforces clear and lowercase import alias names, echoing
the principles of good package naming. Users can follow these guidelines by default or define a custom regex rule.
Importantly, aliases with underscores ("_") are always allowed.
_Configuration_: (string) regular expression to match the aliases (default: ^[a-z][a-z0-9]{0,}$)
Example:
```toml
[rule.import-alias-naming]
arguments =["^[a-z][a-z0-9]{0,}$"]
```
## line-length-limit
_Description_: Warns in the presence of code lines longer than a configured maximum.
@ -611,9 +614,9 @@ More information [here](https://github.com/golang/go/wiki/CodeReviewComments#pac
_Configuration_: N/A
## range
## range-val-address
_Description_: This rule suggests a shorter way of writing ranges that do not use the second value.
_Description_: Range variables in a loop are reused at each iteration. This rule warns when assigning the address of the variable, passing the address to append() or using it in a map.
_Configuration_: N/A
@ -624,9 +627,9 @@ This rule warns when a range value (or index) is used inside a closure
_Configuration_: N/A
## range-val-address
## range
_Description_: Range variables in a loop are reused at each iteration. This rule warns when assigning the address of the variable, passing the address to append() or using it in a map.
_Description_: This rule suggests a shorter way of writing ranges that do not use the second value.
_Configuration_: N/A
@ -643,8 +646,9 @@ Even if possible, redefining these built in names can lead to bugs very difficul
_Configuration_: N/A
## string-of-int
_Description_: explicit type conversion `string(i)` where `i` has an integer type other than `rune` might behave not as expected by the developer (e.g. `string(42)` is not `"42"`). This rule spot that kind of suspicious conversions.
## redundant-import-alias
_Description_: This rule warns on redundant import aliases. This happens when the alias used on the import statement matches the imported package name.
_Configuration_: N/A
@ -674,6 +678,12 @@ Example:
["panic", "/^[^\\n]*$/", "must not contain line breaks"]]
```
## string-of-int
_Description_: explicit type conversion `string(i)` where `i` has an integer type other than `rune` might behave not as expected by the developer (e.g. `string(42)` is not `"42"`). This rule spot that kind of suspicious conversions.
_Configuration_: N/A
## struct-tag
_Description_: Struct tags are not checked at compile time.
@ -689,7 +699,6 @@ To accept the `inline` option in JSON tags (and `outline` and `gnu` in BSON tags
arguments = ["json,inline","bson,outline,gnu"]
```
## superfluous-else
_Description_: To improve the readability of code, it is recommended to reduce the indentation as much as possible.
@ -738,29 +747,6 @@ Example:
arguments = [{acceptIgnoredAssertionResult=true}]
```
## var-naming
_Description_: This rule warns when [initialism](https://github.com/golang/go/wiki/CodeReviewComments#initialisms), [variable](https://github.com/golang/go/wiki/CodeReviewComments#variable-names) or [package](https://github.com/golang/go/wiki/CodeReviewComments#package-names) naming conventions are not followed.
_Configuration_: This rule accepts two slices of strings and one optional slice with single map with named parameters.
(it's due to TOML hasn't "slice of any" and we keep backward compatibility with previous config version)
First slice is a whitelist and second one is a blacklist of initialisms.
In map, you can add "upperCaseConst=true" parameter to allow `UPPER_CASE` for `const`
By default, the rule behaves exactly as the alternative in `golint` but optionally, you can relax it (see [golint/lint/issues/89](https://github.com/golang/lint/issues/89))
Example:
```toml
[rule.var-naming]
arguments = [["ID"], ["VM"], [{upperCaseConst=true}]]
```
## var-declaration
_Description_: This rule proposes simplifications of variable declarations.
_Configuration_: N/A
## unconditional-recursion
_Description_: Unconditional recursive calls will produce infinite recursion, thus program stack overflow. This rule detects and warns about unconditional (direct) recursive calls.
@ -837,7 +823,6 @@ allows any names started with `_`, not just `_` itself:
func (_my *MyStruct) SomeMethod() {} // matches rule
```
## use-any
_Description_: Since GO 1.18, `interface{}` has an alias: `any`. This rule proposes to replace instances of `interface{}` with `any`.
@ -854,6 +839,29 @@ The rule emits a specific warning for such cases.
_Configuration_: N/A
## var-declaration
_Description_: This rule proposes simplifications of variable declarations.
_Configuration_: N/A
## var-naming
_Description_: This rule warns when [initialism](https://github.com/golang/go/wiki/CodeReviewComments#initialisms), [variable](https://github.com/golang/go/wiki/CodeReviewComments#variable-names) or [package](https://github.com/golang/go/wiki/CodeReviewComments#package-names) naming conventions are not followed.
_Configuration_: This rule accepts two slices of strings and one optional slice with single map with named parameters.
(it's due to TOML hasn't "slice of any" and we keep backward compatibility with previous config version)
First slice is a whitelist and second one is a blacklist of initialisms.
In map, you can add "upperCaseConst=true" parameter to allow `UPPER_CASE` for `const`
By default, the rule behaves exactly as the alternative in `golint` but optionally, you can relax it (see [golint/lint/issues/89](https://github.com/golang/lint/issues/89))
Example:
```toml
[rule.var-naming]
arguments = [["ID"], ["VM"], [{upperCaseConst=true}]]
```
## waitgroup-by-value
_Description_: Function parameters that are passed by value, are in fact a copy of the original argument. Passing a copy of a `sync.WaitGroup` is usually not what the developer wants to do.
@ -861,8 +869,4 @@ This rule warns when a `sync.WaitGroup` expected as a by-value parameter in a fu
_Configuration_: N/A
## redundant-import-alias
_Description_: This rule warns on redundant import aliases. This happens when the alias used on the import statement matches the imported package name.
_Configuration_: N/A