diff options
Diffstat (limited to '.golangci.yml')
-rw-r--r-- | .golangci.yml | 804 |
1 files changed, 804 insertions, 0 deletions
diff --git a/.golangci.yml b/.golangci.yml new file mode 100644 index 0000000..b8b8f9d --- /dev/null +++ b/.golangci.yml @@ -0,0 +1,804 @@ +run: + tests: true # include test files or not, default is true + go: '1.22' + +linters: + enable: + - asciicheck # Simple linter to check that your code does not contain non-ASCII identifiers + - bodyclose # checks whether HTTP response body is closed successfully + - depguard # Go linter that checks if package imports are in a list of acceptable packages + - dupl # Tool for code clone detection + - errcheck # Errcheck is a program for checking for unchecked errors in go programs. These unchecked errors can be critical bugs in some cases + - errorlint # 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 + - exhaustive # check exhaustiveness of enum switch statements and map literals + - exportloopref # checks for pointers to enclosing loop variables + - gochecknoinits # Checks that no init functions are present in Go code + - gocognit # Computes and checks the cognitive complexity of functions + - goconst # Finds repeated strings that could be replaced by a constant + - gocritic # Provides diagnostics that check for bugs, performance and style issues + - gocyclo # Computes and checks the cyclomatic complexity of functions + - godot # Check if comments end in a period + - gofmt # Gofmt checks whether code was gofmt-ed. By default, this tool runs with -s option to check for code simplification + - goheader # Checks is file header matches to pattern + - goimports # In addition to fixing imports, goimports also formats your code in the same style as gofmt + - gomodguard # 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 + - gosec # Inspects source code for security problems + - gosimple # Linter for Go source code that specializes in simplifying code + - govet # Vet examines Go source code and reports suspicious constructs, such as Printf calls whose arguments do not align with the format string + - ineffassign # Detects when assignments to existing variables are not used + - misspell # Finds commonly misspelled English words in comments + - nakedret # Finds naked returns in functions greater than a specified function length + - nestif # Reports deeply nested if statements + - noctx # noctx finds sending http request without context.Context + - nolintlint # Reports ill-formed or insufficient nolint directives + - paralleltest # paralleltest detects missing usage of t.Parallel() method in your Go test + - prealloc # Finds slice declarations that could potentially be pre-allocated + - revive # Fast, configurable, extensible, flexible, and beautiful linter for Go. Drop-in replacement of golint + - rowserrcheck # checks whether Err of rows is checked successfully + - sqlclosecheck # Checks that sql.Rows and sql.Stmt are closed + - staticcheck # 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 + - stylecheck # Stylecheck is a replacement for golint + - tparallel # tparallel detects inappropriate usage of t.Parallel() method in your Go test codes + - typecheck # Like the front-end of a Go compiler, parses and type-checks Go code + - unconvert # Remove unnecessary type conversions + - unparam # Reports unused function parameters + - unused # Checks Go code for unused constants, variables, functions and types + - whitespace # Tool for detection of leading and trailing whitespace + - asasalint # check for pass []any as any in variadic func(...any) + - bidichk # Checks for dangerous unicode character sequences + - containedctx # containedctx is a linter that detects struct contained context.Context field + - cyclop # checks function and package cyclomatic complexity + - decorder # check declaration order and count of types, constants, variables and functions + - dogsled # Checks assignments with too many blank identifiers (e.g. x, _, _, _, := f()) + - dupword # checks for duplicate words in the source code + - durationcheck # check for two durations multiplied together + - errchkjson # Checks types passed to the json encoding functions. Reports unsupported types and optionally reports occasions, where the check for the returned error can be omitted. + - errname # Checks that sentinel errors are prefixed with the `Err` and error types are suffixed with the `Error` + - execinquery # execinquery is a linter about query string checker in Query function which reads your Go src files and warning it finds + - forbidigo # Forbids identifiers + - forcetypeassert # finds forced type assertions + - funlen # Tool for detection of long functions + - gomnd # An analyzer to detect magic numbers + - gomoddirectives # Manage the use of 'replace', 'retract', and 'excludes' directives in go.mod + - goprintffuncname # Checks that printf-like functions are named with `f` at the end + - grouper # An analyzer to analyze expression groups + - importas # Enforces consistent import aliases + - interfacebloat # A linter that checks the number of methods inside an interface + - lll # Reports long lines + - loggercheck # Checks key valur pairs for common logger libraries (kitlog,klog,logr,zap) + - maintidx # maintidx measures the maintainability index of each function + - makezero # Finds slice declarations with non-zero initial length + - nilerr # Finds the code that returns nil even if it checks that the error is not nil + - nilnil # Checks that there is no simultaneous return of `nil` error and an invalid value + - nlreturn # nlreturn checks for a new line before return and branch statements to increase code clarity + - nosprintfhostport # Checks for misuse of Sprintf to construct a host with port in a URL + - predeclared # find code that shadows one of Go's predeclared identifiers + - promlinter # Check Prometheus metrics naming via promlint + - reassign # Checks that package variables are not reassigned + - tagliatelle # Checks the struct tags + - tenv # tenv is analyzer that detects using os.Setenv instead of t.Setenv since Go1.17 + - testableexamples # linter checks if examples are testable (have an expected output) + - thelper # thelper detects golang test helpers without t.Helper() call and checks the consistency of test helpers + - usestdlibvars # A linter that detect the possibility to use variables/constants from the Go standard library + - varnamelen # checks that the length of a variable's name matches its scope + - wastedassign # wastedassign finds wasted assignment statements + - wsl # Whitespace Linter - Forces you to use empty lines + disable: + # [disabled] + # Use goimports instead. + - gci # Gci controls golang package import order and makes it always deterministic + # This is just a most stupid linter rule ever. + - testpackage # linter that makes you use a separate _test package + # Sometimes you really need globals. + - gochecknoglobals # check that no global variables exist + # This is stupid. + - exhaustruct # Checks if all structure fields are initialized. + # Sometimes you just have to return unwrapped error. + - wrapcheck # Checks that errors returned from external packages are wrapped. + # Not always and not everywhere. + - ireturn # Accept Interfaces, Return Concrete Types. + # They are useful to handle errors in deferred functions. + - nonamedreturns # Reports all named returns. + # Disabled because of lack of configuration. It makes a lot of unnecessary noise. + - goerr113 # Golang linter to check the errors handling expressions. + # Disabled because of the bug of reporting already sorted imports order. + - gofumpt # Gofumpt checks whether code was gofumpt-ed. + + # [deprecated] + - structcheck # Finds unused struct fields + - varcheck # Finds unused global variables and constants + - deadcode # Finds unused code + - exhaustivestruct # Checks if all struct's fields are initialized + - godox # Tool for detection of FIXME, TODO and other comment keywords + - golint # Golint differs from gofmt. Gofmt reformat Go source code, whereas golint prints out style mistakes + - ifshort # Checks that your code uses short syntax for if-statements whenever possible + - interfacer # Linter that suggests narrower interface types + - maligned # Tool to detect Go structs that would take less memory if their fields were sorted + - nosnakecase # nosnakecase is a linter that detects snake case of variable naming and function name + - scopelint # Scopelint checks for unpinned variables in go programs + +linters-settings: + depguard: + rules: + prevent_unmaintained_packages: + list-mode: lax # allow unless explicitely denied + files: + - $all + - "!$test" + allow: + - $gostd + deny: + - pkg: io/ioutil + desc: "replaced by io and os packages since Go 1.16: https://tip.golang.org/doc/go1.16#ioutil" + + paralleltest: + # Ignore missing calls to `t.Parallel()` and only report incorrect uses of it. + # Default: false + ignore-missing: true + + revive: + # Maximum number of open files at the same time. + # See https://github.com/mgechev/revive#command-line-flags + # Defaults to unlimited. + + # When set to false, ignores files with "GENERATED" header, similar to golint. + # See https://github.com/mgechev/revive#available-rules for details. + # Default: false + ignore-generated-header: true + # Sets the default severity. + # See https://github.com/mgechev/revive#configuration + # Default: warning + severity: warning + # Enable all available rules. + # Default: false + enable-all-rules: true + # Sets the default failure confidence. + # This means that linting errors with less than 0.8 confidence will be ignored. + # Default: 0.8 + confidence: 0.1 + rules: + # Suggests using constant for magic numbers and string literals. + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#add-constant + # TODO: try rule later. Looks like it is broken in 1.50.0. Use gomnd instead + - name: add-constant + severity: warning + disabled: true + arguments: + - maxLitCount: '5' + allowStrs: '""' + allowInts: '0,1,2,3,4,5,6,7,8,9,10,24,30,31' + allowFloats: '0.0,0.,1.0,1.,2.0,2.' + + + # Warns when a function receives more parameters than the maximum set by the rule's configuration. + # Enforcing a maximum number of parameters helps to keep the code readable and maintainable. + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#argument-limit + - name: argument-limit + severity: warning + disabled: false + arguments: [ 4 ] + + # Check for commonly mistaken usages of the sync/atomic package + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#atomic + - name: atomic + severity: warning + disabled: false + + # Warns on bare (a.k.a. naked) returns + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#banned-characters + - name: banned-characters + severity: warning + disabled: false + arguments: [ "Ω", "Σ", "σ", "7" ] + + # Checks given banned characters in identifiers(func, var, const). Comments are not checked. + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#bare-return + - name: bare-return + severity: warning + disabled: false + + # Blank import should be only in a main or test package, or have a comment justifying it. + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#blank-imports + - name: blank-imports + severity: warning + disabled: false + + # Using Boolean literals (true, false) in logic expressions may make the code less readable. + # This rule suggests removing Boolean literals from logic expressions. + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#bool-literal-in-expr + - name: bool-literal-in-expr + severity: warning + disabled: false + + # Explicitly invoking the garbage collector is, except for specific uses in benchmarking, very dubious. + # The garbage collector can be configured through environment variables as described here: https://pkg.go.dev/runtime + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#call-to-gc + - name: call-to-gc + severity: warning + disabled: false + + # Description: Cognitive complexity is a measure of how hard code is to understand. + # While cyclomatic complexity is good to measure "testability" of the code, cognitive complexity + # aims to provide a more precise measure of the difficulty of understanding the code. + # Enforcing a maximum complexity per function helps to keep code readable and maintainable. + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#cognitive-complexity + - name: cognitive-complexity + severity: warning + disabled: false + arguments: [ 30 ] + + # Methods or fields of struct that have names different only by capitalization could be confusing. + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#confusing-naming + - name: confusing-naming + severity: warning + disabled: false + + # Function or methods that return multiple, no named, values of the same type could induce error. + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#confusing-results + - name: confusing-results + severity: warning + disabled: false + + # The rule spots logical expressions that evaluate always to the same value. + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#constant-logical-expr + - name: constant-logical-expr + severity: warning + disabled: false + + # By convention, context.Context should be the first parameter of a function. + # https://github.com/golang/go/wiki/CodeReviewComments#contexts + # This rule spots function declarations that do not follow the convention. + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#context-as-argument + - name: context-as-argument + severity: warning + disabled: false + arguments: [ { allowTypesBefore = "*testing.T" } ] + + # Basic types should not be used as a key in context.WithValue. + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#context-keys-type + - name: context-keys-type + severity: warning + disabled: false + + # Cyclomatic complexity is a measure of code complexity. + # Enforcing a maximum complexity per function helps to keep code readable and maintainable. + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#cyclomatic + - name: cyclomatic + severity: warning + disabled: false + arguments: [ 15 ] + + # This rule spots potential dataraces caused by go-routines capturing (by-reference) particular + # identifiers of the function from which go-routines are created. + # The rule is able to spot two of such cases: go-routines capturing named return values, + # and capturing for-range values. + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#datarace + - name: datarace + severity: warning + disabled: false + + # Packages exposing functions that can stop program execution by exiting are hard to reuse. + # This rule looks for program exits in functions other than main() or init(). + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#deep-exit + - name: deep-exit + severity: warning + disabled: false + + # This rule warns on some common mistakes when using defer statement. + # It currently alerts on the following situations: + # - [ call-chain ] - even if deferring call-chains of the form foo()() is valid, + # it does not help code understanding (only the last call is deferred) + # - [ loop ] - deferring inside loops can be misleading (deferred functions are not executed at the end + # of the loop iteration but of the current function) and it could lead to exhausting the execution stack + # - [ method-call ] - deferring a call to a method can lead to subtle bugs if the method does not have a pointer receiver + # - [ recover ] - calling recover outside a deferred function has no effect + # - [ immediate-recover ] - calling recover at the time a defer is registered, rather than as part of the deferred callback. + # e.g. defer recover() or equivalent. + # - [ return ] - returning values form a deferred function has no effect. + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#defer + - name: defer + severity: warning + disabled: false + arguments: + - [ "call-chain", "loop", "method-call", "recover", "immediate-recover", "return" ] + + # Importing with . makes the programs much harder to understand because it is unclear + # whether names belong to the current package or to an imported package. + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#dot-imports + - name: dot-imports + severity: warning + disabled: false + + # It is possible to unintentionally import the same package twice. + # This rule looks for packages that are imported two or more times. + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#duplicated-imports + - name: duplicated-imports + severity: warning + disabled: false + + # In GO it is idiomatic to minimize nesting statements, a typical example is to avoid if-then-else constructions. + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#early-return + - name: early-return + severity: warning + disabled: false + + # Empty blocks make code less readable and could be a symptom of a bug or unfinished refactoring. + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#empty-block + - name: empty-block + severity: warning + disabled: false + + # Sometimes gofmt is not enough to enforce a common formatting of a code-base. + # This rule warns when there are heading or trailing newlines in code blocks. + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#empty-lines + - name: empty-lines + severity: warning + disabled: false + + # By convention, for the sake of readability, variables of type error must be named with the prefix err. + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#error-naming + - name: error-naming + severity: warning + disabled: false + + # By convention, for the sake of readability, the errors should be last in the list of returned values by a function. + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#error-return + - name: error-return + severity: warning + disabled: false + + # By convention, for better readability, error messages should not be capitalized or end with punctuation or a newline. + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#error-strings + - name: error-strings + severity: warning + disabled: false + + # 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. + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#errorf + - name: errorf + severity: warning + disabled: false + + # Exported function and methods should have comments. + # This warns on undocumented exported functions and methods. + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#exported + - name: exported + severity: warning + disabled: false + arguments: [ ] + + # This rule helps to enforce a common header for all source files in a project by spotting those files + # that do not have the specified header. + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#file-header + - name: file-header + severity: warning + disabled: true + arguments: [ "" ] + + # If a function controls the flow of another by passing it information on what to do, both functions are said to be control-coupled. + # Coupling among functions must be minimized for better maintainability of the code. + # This rule warns on boolean parameters that create a control coupling. + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#flag-parameter + - name: flag-parameter + severity: warning + disabled: false + + # Functions returning too many results can be hard to understand/use. + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#function-result-limit + - name: function-result-limit + severity: warning + disabled: false + arguments: [ 2 ] + + # Functions too long (with many statements and/or lines) can be hard to understand. + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#function-length + - name: function-length + severity: warning + disabled: false + # (int,int) the maximum allowed statements and lines. + # Must be non-negative integers. Set to 0 to disable the check + arguments: [ 30, 0 ] + + # Typically, functions with names prefixed with Get are supposed to return a value. + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#get-return + - name: get-return + severity: warning + disabled: false + + # An if-then-else conditional with identical implementations in both branches is an error. + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#identical-branches + - name: identical-branches + severity: warning + disabled: false + + # Checking if an error is nil to just after return the error or nil is redundant. + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#if-return + - name: if-return + severity: warning + disabled: false + + # By convention, for better readability, incrementing an integer variable by 1 is recommended + # to be done using the ++ operator. + # This rule spots expressions like i += 1 and i -= 1 and proposes to change them into i++ and i--. + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#increment-decrement + - name: increment-decrement + severity: warning + disabled: false + + # To improve the readability of code, it is recommended to reduce the indentation as much as possible. + # This rule highlights redundant else-blocks that can be eliminated from the code. + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#indent-error-flow + - name: indent-error-flow + severity: warning + disabled: false + + # Warns when importing black-listed packages. + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#imports-blacklist + - name: imports-blocklist + severity: warning + disabled: false + arguments: + - "crypto/md5" + - "crypto/sha1" + + # 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. + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#import-shadowing + - name: import-shadowing + severity: warning + disabled: false + + # Warns in the presence of code lines longer than a configured maximum. + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#line-length-limit + - name: line-length-limit + severity: warning + disabled: false + arguments: [ 150 ] + + # Packages declaring too many public structs can be hard to understand/use, + # and could be a symptom of bad design. + # This rule warns on files declaring more than a configured, maximum number of public structs. + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#max-public-structs + - name: max-public-structs + severity: warning + disabled: true + arguments: [ 3 ] + + # A function that modifies its parameters can be hard to understand. + # It can also be misleading if the arguments are passed by value by the caller. + # This rule warns when a function modifies one or more of its parameters. + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#modifies-parameter + - name: modifies-parameter + severity: warning + disabled: false + + # A method that modifies its receiver value can have undesired behavior. + # The modification can be also the root of a bug because the actual value receiver could be a copy of that used at the calling site. + # This rule warns when a method modifies its receiver. + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#modifies-value-receiver + - name: modifies-value-receiver + severity: warning + disabled: false + + # Packages declaring structs that contain other inline struct definitions can be hard to understand/read for other developers. + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#nested-structs + - name: nested-structs + severity: warning + disabled: false + + # conditional expressions can be written to take advantage of short circuit evaluation and speed up + # its average evaluation time by forcing the evaluation of less time-consuming terms before more costly ones. + # This rule spots logical expressions where the order of evaluation of terms seems non-optimal. + # Please notice that confidence of this rule is low and is up to the user to decide if the suggested + # rewrite of the expression keeps the semantics of the original one. + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#optimize-operands-order + - name: optimize-operands-order + severity: warning + disabled: false + + # Packages should have comments. This rule warns on undocumented packages and when packages comments are detached to the package keyword. + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#package-comments + - name: package-comments + severity: warning + disabled: false + + # This rule suggests a shorter way of writing ranges that do not use the second value. + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#range + - name: range + severity: warning + disabled: false + + # Range variables in a loop are reused at each iteration; therefore a goroutine created + # in a loop will point to the range variable with from the upper scope. + # This way, the goroutine could use the variable with an undesired value. + # This rule warns when a range value (or index) is used inside a closure. + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#range-val-in-closure + - name: range-val-in-closure + severity: warning + disabled: false + + # 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. + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#range-val-address + - name: range-val-address + severity: warning + disabled: false + + # By convention, receiver names in a method should reflect their identity. + # For example, if the receiver is of type Parts, p is an adequate name for it. + # Contrary to other languages, it is not idiomatic to name receivers as this or self. + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#receiver-naming + - name: receiver-naming + severity: warning + disabled: false + + # Constant names like false, true, nil, function names like append, make, and basic type names like bool, + # and byte are not reserved words of the language; therefore the can be redefined. + # Even if possible, redefining these built in names can lead to bugs very difficult to detect. + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#redefines-builtin-id + - name: redefines-builtin-id + severity: warning + disabled: false + + # 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. + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#string-of-int + - name: string-of-int + severity: warning + disabled: false + + # This rule allows you to configure a list of regular expressions that string literals + # in certain function calls are checked against. This is geared towards user facing applications + # where string literals are often used for messages that will be presented to users, + # so it may be desirable to enforce consistent formatting. + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#string-format + - name: string-format + severity: warning + disabled: true + arguments: [ ] + + # Struct tags are not checked at compile time. + # This rule, checks and warns if it finds errors in common struct tags types like: + # asn1, default, json, protobuf, xml, yaml. + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#struct-tag + - name: struct-tag + severity: warning + disabled: false + + # To improve the readability of code, it is recommended to reduce the indentation as much as possible. + # This rule highlights redundant else-blocks that can be eliminated from the code. + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#superfluous-else + - name: superfluous-else + severity: warning + disabled: false + + # This rule warns when using == and != for equality check time.Time and suggest to time.time.Equal method, + # for about information follow this link: https://pkg.go.dev/time#Time + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#time-equal + - name: time-equal + severity: warning + disabled: false + + # Using unit-specific suffix like "Secs", "Mins", ... when naming variables of type time.Duration + # can be misleading, this rule highlights those cases. + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#time-naming + - name: time-naming + severity: warning + disabled: false + + # This rule warns when initialism, variable or package naming conventions are not followed. + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#var-naming + - name: var-naming + severity: warning + disabled: false + arguments: + - [ ] # AllowList + - [ "ID", "VM" ] # DenyList + + # This rule proposes simplifications of variable declarations. + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#var-declaration + - name: var-declaration + severity: warning + disabled: false + + # Unconditional recursive calls will produce infinite recursion, thus program stack overflow. + # This rule detects and warns about unconditional (direct) recursive calls. + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#unconditional-recursion + - name: unconditional-recursion + severity: warning + disabled: false + + # This rule warns on wrongly named un-exported symbols, i.e. un-exported symbols whose name + # start with a capital letter. + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#unexported-naming + - name: unexported-naming + severity: warning + disabled: false + + # This rule warns when an exported function or method returns a value of an un-exported type. + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#unexported-return + - name: unexported-return + severity: warning + disabled: false + + # This rule warns when errors returned by a function are not explicitly handled on the caller side. + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#unhandled-error + - name: unhandled-error + severity: warning + disabled: false + arguments: + - "fmt.Println" + - "fmt.Printf" + + # This rule suggests to remove redundant statements like a break at the end of a case block, + # for improving the code's readability. + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#unnecessary-stmt + - name: unnecessary-stmt + severity: warning + disabled: false + + # This rule spots and proposes to remove unreachable code. + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#unreachable-code + - name: unreachable-code + severity: warning + disabled: false + + # This rule warns on unused parameters. Functions or methods with unused parameters can be a symptom of an unfinished refactoring or a bug. + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#unused-parameter + - name: unused-parameter + severity: warning + disabled: false + + # This rule warns on unused method receivers. + # Methods with unused receivers can be a symptom of an unfinished refactoring or a bug. + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#unused-receiver + - name: unused-receiver + severity: warning + disabled: false + + # This rule warns on useless break statements in case clauses of switch and select statements. + # GO, unlike other programming languages like C, only executes statements of the selected case + # while ignoring the subsequent case clauses. + # Therefore, inserting a break at the end of a case clause has no effect. + # Because break statements are rarely used in case clauses, when switch or select statements + # are inside a for-loop, the programmer might wrongly assume that a break in a case clause will + # take the control out of the loop. The rule emits a specific warning for such cases. + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#useless-break + - name: useless-break + severity: warning + disabled: false + + # 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. + # This rule warns when a sync.WaitGroup expected as a by-value parameter in a function or method. + # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#waitgroup-by-value + - name: waitgroup-by-value + severity: warning + disabled: false + + forbidigo: + # Forbid the following identifiers (list of regexp). + # Default: ["^(fmt\\.Print(|f|ln)|print|println)$"] + forbid: + # Optionally put comments at the end of the regex, surrounded by `(# )?` + # Escape any special characters. + - '^print.*$(# print statements should not be committed)' + # Exclude godoc examples from forbidigo checks. + # Default: true + exclude-godoc-examples: true + + cyclop: + # The maximal code complexity to report. + # Default: 10 + max-complexity: 15 + # The maximal average package complexity. + # If it's higher than 0.0 (float) the check is enabled + # Default: 0.0 + package-average: 6 + # Should ignore tests. + # Default: false + skip-tests: true + + funlen: + # Checks the number of lines in a function. + # If lower than 0, disable the check. + # Default: 60 + lines: 200 + # Checks the number of statements in a function. + # If lower than 0, disable the check. + # Default: 40 + statements: 50 + + tagliatelle: + # Check the struck tag name case. + case: + # Use the struct field name to check the name of the struct tag. + # Default: false + use-field-name: false + # `camel` is used for `json` and `yaml` (can be overridden) + # Default: {} + rules: + # Any struct tag type can be used. + # Support string case: `camel`, `pascal`, `kebab`, `snake`, `goCamel`, `goPascal`, `goKebab`, `goSnake`, `upper`, `lower` + json: snake + yaml: camel + xml: camel + bson: camel + avro: snake + mapstructure: kebab + + varnamelen: + # The longest distance, in source lines, that is being considered a "small scope". + # Variables used in at most this many lines will be ignored. + # Default: 5 + max-distance: 10 + # The minimum length of a variable's name that is considered "long". + # Variable names that are at least this long will be ignored. + # Default: 3 + min-name-length: 1 + # Check method receivers. + # Default: false + check-receiver: true + # Check named return values. + # Default: false + check-return: true + # Check type parameters. + # Default: false + check-type-param: true + # Ignore "ok" variables that hold the bool return value of a type assertion. + # Default: false + ignore-type-assert-ok: true + # Ignore "ok" variables that hold the bool return value of a map index. + # Default: false + ignore-map-index-ok: true + # Ignore "ok" variables that hold the bool return value of a channel receive. + # Default: false + ignore-chan-recv-ok: true + # Optional list of variable names that should be ignored completely. + # Default: [] + ignore-names: + - err + # Optional list of variable declarations that should be ignored completely. + # Entries must be in one of the following forms (see below for examples): + # - for variables, parameters, named return values, method receivers, or type parameters: + # <name> <type> (<type> can also be a pointer/slice/map/chan/...) + # - for constants: const <name> + # + # Default: [] + ignore-decls: + - t testing.T + - e error + - i int + - T any + + lll: + # Max line length, lines longer will be reported. + # '\t' is counted as 1 character by default, and can be changed with the tab-width option. + # Default: 120. + line-length: 150 + # Tab width in spaces. + # Default: 1 + tab-width: 1 + + nlreturn: + # Size of the block (including return statement that is still "OK") + # so no return split required. + # Default: 1 + block-size: 3 + + wsl: + # See https://github.com/bombsimon/wsl/blob/master/doc/configuration.md for + # documentation of available settings. These are the defaults for golangci-lint. + allow-assign-and-anything: false + allow-assign-and-call: true + allow-cuddle-declarations: false + allow-multiline-assign: true + allow-separated-leading-comment: false + allow-trailing-comment: false + force-case-trailing-whitespace: 0 + force-err-cuddling: false + force-short-decl-cuddling: false + strict-append: true
\ No newline at end of file |