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: # ( can also be a pointer/slice/map/chan/...) # - for constants: const # # 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