804 lines
No EOL
39 KiB
YAML
804 lines
No EOL
39 KiB
YAML
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 |