mirror of
				https://github.com/openimsdk/open-im-server.git
				synced 2025-10-26 21:22:16 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			855 lines
		
	
	
		
			31 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			855 lines
		
	
	
		
			31 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
| # Copyright © 2023 OpenIMSDK open source community. All rights reserved.
 | |
| #
 | |
| # Licensed under the Apache License, Version 2.0 (the "License");
 | |
| # you may not use this file except in compliance with the License.
 | |
| # You may obtain a copy of the License at
 | |
| #
 | |
| #     http://www.apache.org/licenses/LICENSE-2.0
 | |
| #
 | |
| # Unless required by applicable law or agreed to in writing, software
 | |
| # distributed under the License is distributed on an "AS IS" BASIS,
 | |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | |
| # See the License for the specific language governing permissions and
 | |
| # limitations under the License.
 | |
| 
 | |
| # This file contains all available configuration options
 | |
| # with their default values.
 | |
| 
 | |
| # options for analysis running
 | |
| run:
 | |
|   # default concurrency is a available CPU number
 | |
|   concurrency: 4
 | |
| 
 | |
|   # timeout for analysis, e.g. 30s, 5m, default is 1m
 | |
|   timeout: 5m
 | |
| 
 | |
|   # exit code when at least one issue was found, default is 1
 | |
|   issues-exit-code: 1
 | |
| 
 | |
|   # include test files or not, default is true
 | |
|   tests: true
 | |
| 
 | |
|   # list of build tags, all linters use it. Default is empty list.
 | |
|   build-tags:
 | |
|     - mytag
 | |
| 
 | |
|   # which dirs to skip: issues from them won't be reported;
 | |
|   # can use regexp here: generated.*, regexp is applied on full path;
 | |
|   # default value is empty list, but default dirs are skipped independently
 | |
|   # from this option's value (see skip-dirs-use-default).
 | |
|   # "/" will be replaced by current OS file path separator to properly work
 | |
|   # on Windows.
 | |
|   skip-dirs:
 | |
|     - util
 | |
|     - .*~
 | |
|     - api/swagger/docs
 | |
|     - server/docs
 | |
| 
 | |
|   # default is true. Enables skipping of directories:
 | |
|   #   vendor$, third_party$, testdata$, examples$, Godeps$, builtin$
 | |
|   skip-dirs-use-default: true
 | |
| 
 | |
|   # which files to skip: they will be analyzed, but issues from them
 | |
|   # won't be reported. Default value is empty list, but there is
 | |
|   # no need to include all autogenerated files, we confidently recognize
 | |
|   # autogenerated files. If it's not please let us know.
 | |
|   # "/" will be replaced by current OS file path separator to properly work
 | |
|   # on Windows.
 | |
|   skip-files:
 | |
|     - ".*\\.my\\.go$"
 | |
|     - _test.go
 | |
| 
 | |
|   # by default isn't set. If set we pass it to "go list -mod={option}". From "go help modules":
 | |
|   # If invoked with -mod=readonly, the go command is disallowed from the implicit
 | |
|   # automatic updating of go.mod described above. Instead, it fails when any changes
 | |
|   # to go.mod are needed. This setting is most useful to check that go.mod does
 | |
|   # not need updates, such as in a continuous integration and testing system.
 | |
|   # If invoked with -mod=vendor, the go command assumes that the vendor
 | |
|   # directory holds the correct copies of dependencies and ignores
 | |
|   # the dependency descriptions in go.mod.
 | |
|   #modules-download-mode: release|readonly|vendor
 | |
| 
 | |
|   # Allow multiple parallel golangci-lint instances running.
 | |
|   # If false (default) - golangci-lint acquires file lock on start.
 | |
|   allow-parallel-runners: true
 | |
| 
 | |
| 
 | |
| # output configuration options
 | |
| output:
 | |
|   # colored-line-number|line-number|json|tab|checkstyle|code-climate, default is "colored-line-number"
 | |
|   format: colored-line-number
 | |
| 
 | |
|   # print lines of code with issue, default is true
 | |
|   print-issued-lines: true
 | |
| 
 | |
|   # print linter name in the end of issue text, default is true
 | |
|   print-linter-name: true
 | |
| 
 | |
|   # make issues output unique by line, default is true
 | |
|   uniq-by-line: true
 | |
| 
 | |
|   # add a prefix to the output file references; default is no prefix
 | |
|   path-prefix: ""
 | |
| 
 | |
|   # sorts results by: filepath, line and column
 | |
|   sort-results: true
 | |
| 
 | |
| # all available settings of specific linters
 | |
| linters-settings:
 | |
|   bidichk:
 | |
|     # The following configurations check for all mentioned invisible unicode
 | |
|     # runes. It can be omitted because all runes are enabled by default.
 | |
|     left-to-right-embedding: true
 | |
|     right-to-left-embedding: true
 | |
|     pop-directional-formatting: true
 | |
|     left-to-right-override: true
 | |
|     right-to-left-override: true
 | |
|     left-to-right-isolate: true
 | |
|     right-to-left-isolate: true
 | |
|     first-strong-isolate: true
 | |
|     pop-directional-isolate: true
 | |
|   dogsled:
 | |
|     # checks assignments with too many blank identifiers; default is 2
 | |
|     max-blank-identifiers: 2
 | |
|   dupl:
 | |
|     # tokens count to trigger issue, 150 by default
 | |
|     threshold: 200
 | |
|   errcheck:
 | |
|     # report about not checking of errors in type assertions: `a := b.(MyStruct)`;
 | |
|     # default is false: such cases aren't reported by default.
 | |
|     check-type-assertions: false
 | |
| 
 | |
|     # report about assignment of errors to blank identifier: `num, _ := strconv.Atoi(numStr)`;
 | |
|     # default is false: such cases aren't reported by default.
 | |
|     check-blank: false
 | |
| 
 | |
|     # [deprecated] comma-separated list of pairs of the form pkg:regex
 | |
|     # the regex is used to ignore names within pkg. (default "fmt:.*").
 | |
|     # see https://github.com/kisielk/errcheck#the-deprecated-method for details
 | |
|     #ignore: GenMarkdownTree,os:.*,BindPFlags,WriteTo,Help
 | |
|     #ignore: (os\.)?std(out|err)\..*|.*Close|.*Flush|os\.Remove(All)?|.*print(f|ln)?|os\.(Un)?Setenv
 | |
| 
 | |
|     # path to a file containing a list of functions to exclude from checking
 | |
|     # see https://github.com/kisielk/errcheck#excluding-functions for details
 | |
|     #exclude: errcheck.txt
 | |
|     
 | |
|   errorlint:
 | |
|     # Check whether fmt.Errorf uses the %w verb for formatting errors. See the readme for caveats
 | |
|     errorf: true
 | |
|     # Check for plain type assertions and type switches
 | |
|     asserts: true
 | |
|     # Check for plain error comparisons
 | |
|     comparison: true
 | |
| 
 | |
|   exhaustive:
 | |
|     # check switch statements in generated files also
 | |
|     check-generated: false
 | |
|     # indicates that switch statements are to be considered exhaustive if a
 | |
|     # 'default' case is present, even if all enum members aren't listed in the
 | |
|     # switch
 | |
|     default-signifies-exhaustive: false
 | |
|     # enum members matching the supplied regex do not have to be listed in
 | |
|     # switch statements to satisfy exhaustiveness
 | |
|     ignore-enum-members: ""
 | |
|     # consider enums only in package scopes, not in inner scopes
 | |
|     package-scope-only: false
 | |
|   exhaustivestruct:
 | |
|     struct-patterns:
 | |
|       - '*.Test'
 | |
|       - '*.Test2'
 | |
|       - '*.Embedded'
 | |
|       - '*.External'
 | |
| 
 | |
|   # forbidigo:
 | |
|   #   # Forbid the following identifiers (identifiers are written using regexp):
 | |
|   #   forbid:
 | |
|   #     - ^print.*$
 | |
|   #     - 'fmt\.Print.*'
 | |
|   #     - fmt.Println.* # too much log noise
 | |
|   #     - ginkgo\\.F.* # these are used just for local development
 | |
|   #   # Exclude godoc examples from forbidigo checks.  Default is true.
 | |
|   #   exclude_godoc_examples: false
 | |
|   funlen:
 | |
|     lines: 150
 | |
|     statements: 80
 | |
|   gci:
 | |
|     # put imports beginning with prefix after 3rd-party packages;
 | |
|     # only support one prefix
 | |
|     # if not set, use goimports.local-prefixes
 | |
|     prefix: github.com/openimsdk/open-im-server
 | |
|   gocognit:
 | |
|     # minimal code complexity to report, 30 by default (but we recommend 10-20)
 | |
|     min-complexity: 30
 | |
|   goconst:
 | |
|     # minimal length of string constant, 3 by default
 | |
|     min-len: 3
 | |
|     # minimal occurrences count to trigger, 3 by default
 | |
|     min-occurrences: 3
 | |
|     # ignore test files, false by default
 | |
|     ignore-tests: false
 | |
|     # look for existing constants matching the values, true by default
 | |
|     match-constant: true
 | |
|     # search also for duplicated numbers, false by default
 | |
|     numbers: false
 | |
|     # minimum value, only works with goconst.numbers, 3 by default
 | |
|     min: 3
 | |
|     # maximum value, only works with goconst.numbers, 3 by default
 | |
|     max: 3
 | |
|     # ignore when constant is not used as function argument, true by default
 | |
|     ignore-calls: true
 | |
| 
 | |
|   gocritic:
 | |
|     # Which checks should be enabled; can't be combined with 'disabled-checks';
 | |
|     # See https://go-critic.github.io/overview#checks-overview
 | |
|     # To check which checks are enabled run `GL_DEBUG=gocritic golangci-lint run`
 | |
|     # By default list of stable checks is used.
 | |
|     enabled-checks:
 | |
|       #- rangeValCopy
 | |
|       - nestingreduce
 | |
|       - truncatecmp
 | |
|       - unnamedresult
 | |
|       - ruleguard
 | |
| 
 | |
|     # Which checks should be disabled; can't be combined with 'enabled-checks'; default is empty
 | |
|     disabled-checks:
 | |
|       - regexpMust
 | |
|       - ifElseChain
 | |
|       #- exitAfterDefer
 | |
| 
 | |
|     # Enable multiple checks by tags, run `GL_DEBUG=gocritic golangci-lint run` to see all tags and checks.
 | |
|     # Empty list by default. See https://github.com/go-critic/go-critic#usage -> section "Tags".
 | |
|     enabled-tags:
 | |
|       - performance
 | |
|     disabled-tags:
 | |
|       - experimental
 | |
| 
 | |
|     # Settings passed to gocritic.
 | |
|     # The settings key is the name of a supported gocritic checker.
 | |
|     # The list of supported checkers can be find in https://go-critic.github.io/overview.
 | |
|     settings:
 | |
|       captLocal: # must be valid enabled check name
 | |
|         # whether to restrict checker to params only (default true)
 | |
|         paramsOnly: true
 | |
|       elseif:
 | |
|         # whether to skip balanced if-else pairs (default true)
 | |
|         skipBalanced: true
 | |
|       hugeParam:
 | |
|         # size in bytes that makes the warning trigger (default 80)
 | |
|         sizeThreshold: 80
 | |
|       nestingReduce:
 | |
|         # min number of statements inside a branch to trigger a warning (default 5)
 | |
|         bodyWidth: 5
 | |
|       rangeExprCopy:
 | |
|         # size in bytes that makes the warning trigger (default 512)
 | |
|         sizeThreshold: 512
 | |
|         # whether to check test functions (default true)
 | |
|         skipTestFuncs: true
 | |
|       rangeValCopy:
 | |
|         # size in bytes that makes the warning trigger (default 128)
 | |
|         sizeThreshold: 32
 | |
|         # whether to check test functions (default true)
 | |
|         skipTestFuncs: true
 | |
|       ruleguard:
 | |
|         # path to a gorules file for the ruleguard checker
 | |
|         rules: ''
 | |
|       truncateCmp:
 | |
|         # whether to skip int/uint/uintptr types (default true)
 | |
|         skipArchDependent: true
 | |
|       underef:
 | |
|         # whether to skip (*x).method() calls where x is a pointer receiver (default true)
 | |
|         skipRecvDeref: true
 | |
|       unnamedResult:
 | |
|         # whether to check exported functions
 | |
|         checkExported: true
 | |
|   gocyclo:
 | |
|     # minimal code complexity to report, 30 by default (but we recommend 10-20)
 | |
|     min-complexity: 30
 | |
|   cyclop:
 | |
|     # the maximal code complexity to report
 | |
|     max-complexity: 50
 | |
|     # the maximal average package complexity. If it's higher than 0.0 (float) the check is enabled (default 0.0)
 | |
|     package-average: 0.0
 | |
|     # should ignore tests (default false)
 | |
|     skip-tests: false
 | |
|   godot:
 | |
|     # comments to be checked: `declarations`, `toplevel`, or `all`
 | |
|     scope: declarations
 | |
|     # list of regexps for excluding particular comment lines from check
 | |
|     exclude:
 | |
|       # example: exclude comments which contain numbers
 | |
|       # - '[0-9]+'
 | |
|     # check that each sentence starts with a capital letter
 | |
|     capital: false
 | |
|   godox:
 | |
|     # report any comments starting with keywords, this is useful for TODO or FIXME comments that
 | |
|     # might be left in the code accidentally and should be resolved before merging
 | |
|     keywords: # default keywords are TODO, BUG, and FIXME, these can be overwritten by this setting
 | |
|       #- TODO
 | |
|       - BUG
 | |
|       - FIXME
 | |
|       #- NOTE
 | |
|       - OPTIMIZE # marks code that should be optimized before merging
 | |
|       - HACK # marks hack-arounds that should be removed before merging
 | |
|   gofmt:
 | |
|     # simplify code: gofmt with `-s` option, true by default
 | |
|     simplify: true
 | |
| 
 | |
|   gofumpt:
 | |
|     # Select the Go version to target. The default is `1.18`.
 | |
|     lang-version: "1.20"
 | |
| 
 | |
|     # Choose whether or not to use the extra rules that are disabled
 | |
|     # by default
 | |
|     extra-rules: false
 | |
| 
 | |
|   goheader:
 | |
|     values:
 | |
|       const:
 | |
|         # define here const type values in format k:v, for example:
 | |
|         # COMPANY: MY COMPANY
 | |
|       regexp:
 | |
|         # define here regexp type values, for example
 | |
|         # AUTHOR: .*@mycompany\.com
 | |
|     template: # |-
 | |
|       # put here copyright header template for source code files, for example:
 | |
|       # Note: {{ YEAR }} is a builtin value that returns the year relative to the current machine time.
 | |
|       #
 | |
|       # {{ AUTHOR }} {{ COMPANY }} {{ YEAR }}
 | |
|       # SPDX-License-Identifier: Apache-2.0
 | |
| 
 | |
|       # Licensed under the Apache License, Version 2.0 (the "License");
 | |
|       # you may not use this file except in compliance with the License.
 | |
|       # You may obtain a copy of the License at:
 | |
| 
 | |
|       #   http://www.apache.org/licenses/LICENSE-2.0
 | |
| 
 | |
|       # Unless required by applicable law or agreed to in writing, software
 | |
|       # distributed under the License is distributed on an "AS IS" BASIS,
 | |
|       # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | |
|       # See the License for the specific language governing permissions and
 | |
|       # limitations under the License.
 | |
|     template-path:
 | |
|       # also as alternative of directive 'template' you may put the path to file with the template source
 | |
|   goimports:
 | |
|     # put imports beginning with prefix after 3rd-party packages;
 | |
|     # it's a comma-separated list of prefixes
 | |
|     local-prefixes: github.com/openimsdk/open-im-server
 | |
| 
 | |
|   gomnd:
 | |
|     settings:
 | |
|       mnd:
 | |
|         # the list of enabled checks, see https://github.com/tommy-muehle/go-mnd/#checks for description.
 | |
|         checks: argument,case,condition,operation,return,assign
 | |
|         # ignored-numbers: 1000
 | |
|         # ignored-files: magic_.*.go
 | |
|         # ignored-functions: math.*
 | |
|   gomoddirectives:
 | |
|     # Allow local `replace` directives. Default is false.
 | |
|     replace-local: true
 | |
|     # List of allowed `replace` directives. Default is empty.
 | |
|     replace-allow-list:
 | |
|       - google.golang.org/grpc
 | |
| 
 | |
|     # Allow to not explain why the version has been retracted in the `retract` directives. Default is false.
 | |
|     retract-allow-no-explanation: false
 | |
|     # Forbid the use of the `exclude` directives. Default is false.
 | |
|     exclude-forbidden: false
 | |
|   gomodguard:
 | |
|     allowed:
 | |
|       modules:    
 | |
|         - gorm.io/gen                                                    # List of allowed modules
 | |
|         - gorm.io/gorm
 | |
|         - gorm.io/driver/mysql
 | |
|         - k8s.io/klog
 | |
|         - github.com/allowed/module
 | |
|         - go.mongodb.org/mongo-driver/mongo
 | |
|         # - gopkg.in/yaml.v2
 | |
|       domains:                                                        # List of allowed module domains
 | |
|         - google.golang.org
 | |
|         - gopkg.in
 | |
|         - golang.org
 | |
|         - github.com
 | |
|         - go.mongodb.org
 | |
|         - go.uber.org
 | |
|         - openim.io
 | |
|         - go.etcd.io
 | |
|     blocked:
 | |
|       versions:
 | |
|         - github.com/MakeNowJust/heredoc:
 | |
|             version: "> 2.0.9"
 | |
|             reason: "use the latest version"
 | |
|       local_replace_directives: false     # Set to true to raise lint issues for packages that are loaded from a local path via replace directive
 | |
| 
 | |
|   gosec:
 | |
|     # To select a subset of rules to run.
 | |
|     # Available rules: https://github.com/securego/gosec#available-rules
 | |
|     includes:
 | |
|       - G401
 | |
|       - G306
 | |
|       - G101
 | |
|     # To specify a set of rules to explicitly exclude.
 | |
|     # Available rules: https://github.com/securego/gosec#available-rules
 | |
|     excludes:
 | |
|       - G204
 | |
|     # Exclude generated files
 | |
|     exclude-generated: true
 | |
|     # Filter out the issues with a lower severity than the given value. Valid options are: low, medium, high.
 | |
|     severity: "low"
 | |
|     # Filter out the issues with a lower confidence than the given value. Valid options are: low, medium, high.
 | |
|     confidence: "low"
 | |
|     # To specify the configuration of rules.
 | |
|     # The configuration of rules is not fully documented by gosec:
 | |
|     # https://github.com/securego/gosec#configuration
 | |
|     # https://github.com/securego/gosec/blob/569328eade2ccbad4ce2d0f21ee158ab5356a5cf/rules/rulelist.go#L60-L102
 | |
|     config:
 | |
|       G306: "0600"
 | |
|       G101:
 | |
|         pattern: "(?i)example"
 | |
|         ignore_entropy: false
 | |
|         entropy_threshold: "80.0"
 | |
|         per_char_threshold: "3.0"
 | |
|         truncate: "32"
 | |
| 
 | |
|   gosimple:
 | |
|     # Select the Go version to target. The default is '1.13'.
 | |
|     go: "1.20"
 | |
|     # https://staticcheck.io/docs/options#checks
 | |
|     checks: [ "all" ]
 | |
| 
 | |
|   govet:
 | |
|     # report about shadowed variables
 | |
|     check-shadowing: true
 | |
| 
 | |
|     # settings per analyzer
 | |
|     settings:
 | |
|       printf: # analyzer name, run `go tool vet help` to see all analyzers
 | |
|         funcs: # run `go tool vet help printf` to see available settings for `printf` analyzer
 | |
|           - (github.com/golangci/golangci-lint/pkg/logutils.Log).Infof
 | |
|           - (github.com/golangci/golangci-lint/pkg/logutils.Log).Warnf
 | |
|           - (github.com/golangci/golangci-lint/pkg/logutils.Log).Errorf
 | |
|           - (github.com/golangci/golangci-lint/pkg/logutils.Log).Fatalf
 | |
| 
 | |
|     # enable or disable analyzers by name
 | |
|     enable:
 | |
|       - atomicalign
 | |
|     enable-all: false
 | |
|     disable:
 | |
|       - shadow
 | |
|     disable-all: false
 | |
|   # depguard:
 | |
|   #   list-type: blacklist
 | |
|   #   include-go-root: false
 | |
|   #   packages:
 | |
|   #     - github.com/Sirupsen/logrus
 | |
|   #   packages-with-error-message:
 | |
|   #     # specify an error message to output when a blacklisted package is used
 | |
|   #     - github.com/Sirupsen/logrus: "logging is allowed only by logutils.Log"
 | |
| 
 | |
| 
 | |
|   importas:
 | |
|     # if set to `true`, force to use alias.
 | |
|     no-unaliased: true
 | |
|     # List of aliases
 | |
|     alias:
 | |
|       # using `servingv1` alias for `knative.dev/serving/pkg/apis/serving/v1` package
 | |
|       - pkg: knative.dev/serving/pkg/apis/serving/v1
 | |
|         alias: servingv1
 | |
|       # using `autoscalingv1alpha1` alias for `knative.dev/serving/pkg/apis/autoscaling/v1alpha1` package
 | |
|       - pkg: knative.dev/serving/pkg/apis/autoscaling/v1alpha1
 | |
|         alias: autoscalingv1alpha1
 | |
|       # You can specify the package path by regular expression,
 | |
|       # and alias by regular expression expansion syntax like below.
 | |
|       # see https://github.com/julz/importas#use-regular-expression for details
 | |
|       - pkg: knative.dev/serving/pkg/apis/(\w+)/(v[\w\d]+)
 | |
|         alias: $1$2
 | |
|     # using `jwt` alias for `github.com/appleboy/gin-jwt/v2` package
 | |
|     jwt: github.com/appleboy/gin-jwt/v2
 | |
| 
 | |
|   ireturn:
 | |
|     # ireturn allows using `allow` and `reject` settings at the same time.
 | |
|     # Both settings are lists of the keywords and regular expressions matched to interface or package names.
 | |
|     # keywords:
 | |
|     # - `empty` for `interface{}`
 | |
|     # - `error` for errors
 | |
|     # - `stdlib` for standard library
 | |
|     # - `anon` for anonymous interfaces
 | |
| 
 | |
|     # By default, it allows using errors, empty interfaces, anonymous interfaces,
 | |
|     # and interfaces provided by the standard library.
 | |
|     allow:
 | |
|     - anon
 | |
|     - error
 | |
|     - empty
 | |
|     - stdlib
 | |
|     # You can specify idiomatic endings for interface
 | |
|     - (or|er)$
 | |
| 
 | |
|     # Reject patterns
 | |
|     reject:
 | |
|     - github.com\/user\/package\/v4\.Type
 | |
| 
 | |
|   lll:
 | |
|     # max line length, lines longer will be reported. Default is 120.
 | |
|     # '\t' is counted as 1 character by default, and can be changed with the tab-width option
 | |
|     line-length: 240
 | |
|     # tab width in spaces. Default to 1.
 | |
|     tab-width: 4
 | |
|   maligned:
 | |
|     # print struct with more effective memory layout or not, false by default
 | |
|     suggest-new: true
 | |
|   misspell:
 | |
|     # Correct spellings using locale preferences for US or UK.
 | |
|     # Default is to use a neutral variety of English.
 | |
|     # Setting locale to US will correct the British spelling of 'colour' to 'color'.
 | |
|     locale: US
 | |
|     ignore-words:
 | |
|       - someword
 | |
|   nakedret:
 | |
|     # make an issue if func has more lines of code than this setting and it has naked returns; default is 30
 | |
|     max-func-lines: 30
 | |
| 
 | |
|   nestif:
 | |
|     # minimal complexity of if statements to report, 5 by default
 | |
|     min-complexity: 4
 | |
| 
 | |
|   nilnil:
 | |
|     # By default, nilnil checks all returned types below.
 | |
|     checked-types:
 | |
|       - ptr
 | |
|       - func
 | |
|       - iface
 | |
|       - map
 | |
|       - chan
 | |
| 
 | |
|   nlreturn:
 | |
|     # size of the block (including return statement that is still "OK")
 | |
|     # so no return split required.
 | |
|     block-size: 1
 | |
| 
 | |
|   nolintlint:
 | |
|     # Disable to ensure that all nolint directives actually have an effect. Default is true.
 | |
|     allow-unused: false
 | |
|     # Disable to ensure that nolint directives don't have a leading space. Default is true.
 | |
|     allow-leading-space: true
 | |
|     # Exclude following linters from requiring an explanation.  Default is [].
 | |
|     allow-no-explanation: [ ]
 | |
|     # Enable to require an explanation of nonzero length after each nolint directive. Default is false.
 | |
|     require-explanation: false
 | |
|     # Enable to require nolint directives to mention the specific linter being suppressed. Default is false.
 | |
|     require-specific: true
 | |
| 
 | |
|   prealloc:
 | |
|     # XXX: we don't recommend using this linter before doing performance profiling.
 | |
|     # For most programs usage of prealloc will be a premature optimization.
 | |
| 
 | |
|     # Report preallocation suggestions only on simple loops that have no returns/breaks/continues/gotos in them.
 | |
|     # True by default.
 | |
|     simple: true
 | |
|     range-loops: true # Report preallocation suggestions on range loops, true by default
 | |
|     for-loops: false # Report preallocation suggestions on for loops, false by default
 | |
| 
 | |
|   promlinter:
 | |
|     # Promlinter cannot infer all metrics name in static analysis.
 | |
|     # Enable strict mode will also include the errors caused by failing to parse the args.
 | |
|     strict: false
 | |
|     # Please refer to https://github.com/yeya24/promlinter#usage for detailed usage.
 | |
|     disabled-linters:
 | |
|     #  - "Help"
 | |
|     #  - "MetricUnits"
 | |
|     #  - "Counter"
 | |
|     #  - "HistogramSummaryReserved"
 | |
|     #  - "MetricTypeInName"
 | |
|     #  - "ReservedChars"
 | |
|     #  - "CamelCase"
 | |
|     #  - "lintUnitAbbreviations"
 | |
|     
 | |
|   predeclared:
 | |
|     # comma-separated list of predeclared identifiers to not report on
 | |
|     ignore: ""
 | |
|     # include method names and field names (i.e., qualified names) in checks
 | |
|     q: false
 | |
|   rowserrcheck:
 | |
|     packages:
 | |
|       - github.com/jmoiron/sqlx
 | |
|   revive:
 | |
|     # see https://github.com/mgechev/revive#available-rules for details.
 | |
|     ignore-generated-header: true
 | |
|     severity: warning
 | |
|     rules:
 | |
|       - name: indent-error-flow
 | |
|         severity: warning
 | |
|   staticcheck:
 | |
|     # Select the Go version to target. The default is '1.13'.
 | |
|     go: "1.16"
 | |
|     # https://staticcheck.io/docs/options#checks
 | |
|     checks: [ "all" ]
 | |
| 
 | |
|   stylecheck:
 | |
|     # Select the Go version to target. The default is '1.13'.
 | |
|     go: "1.16"
 | |
| 
 | |
|     # https://staticcheck.io/docs/options#checks
 | |
|     checks: [ "all", "-ST1000", "-ST1003", "-ST1016", "-ST1020", "-ST1021", "-ST1022" ]
 | |
|     # https://staticcheck.io/docs/options#dot_import_whitelist
 | |
|     dot-import-whitelist:
 | |
|       - fmt
 | |
|     # https://staticcheck.io/docs/options#initialisms
 | |
|     initialisms: [ "ACL", "API", "ASCII", "CPU", "CSS", "DNS", "EOF", "GUID", "HTML", "HTTP", "HTTPS", "ID", "IP", "JSON", "QPS", "RAM", "RPC", "SLA", "SMTP", "SQL", "SSH", "TCP", "TLS", "TTL", "UDP", "UI", "GID", "UID", "UUID", "URI", "URL", "UTF8", "VM", "XML", "XMPP", "XSRF", "XSS" ]
 | |
|     # https://staticcheck.io/docs/options#http_status_code_whitelist
 | |
|     http-status-code-whitelist: [ "200", "400", "404", "500" ]
 | |
| 
 | |
| 
 | |
|   tagliatelle:
 | |
|     # check the struck tag name case
 | |
|     case:
 | |
|       # use the struct field name to check the name of the struct tag
 | |
|       use-field-name: true
 | |
|       rules:
 | |
|         # any struct tag type can be used.
 | |
|         # support string case: `camel`, `pascal`, `kebab`, `snake`, `goCamel`, `goPascal`, `goKebab`, `goSnake`, `upper`, `lower`
 | |
|         json: camel
 | |
|         yaml: camel
 | |
|         xml: camel
 | |
|         bson: camel
 | |
|         avro: snake
 | |
|         mapstructure: kebab
 | |
| 
 | |
|   testpackage:
 | |
|     # regexp pattern to skip files
 | |
|     skip-regexp: (id|export|internal)_test\.go
 | |
|   thelper:
 | |
|     # The following configurations enable all checks. It can be omitted because all checks are enabled by default.
 | |
|     # You can enable only required checks deleting unnecessary checks.
 | |
|     test:
 | |
|       first: true
 | |
|       name: true
 | |
|       begin: true
 | |
|     benchmark:
 | |
|       first: true
 | |
|       name: true
 | |
|       begin: true
 | |
|     tb:
 | |
|       first: true
 | |
|       name: true
 | |
|       begin: true
 | |
| 
 | |
|   tenv:
 | |
|     # The option `all` will run against whole test files (`_test.go`) regardless of method/function signatures.
 | |
|     # By default, only methods that take `*testing.T`, `*testing.B`, and `testing.TB` as arguments are checked.
 | |
|     all: false
 | |
| 
 | |
|   unparam:
 | |
|     # Inspect exported functions, default is false. Set to true if no external program/library imports your code.
 | |
|     # XXX: if you enable this setting, unparam will report a lot of false-positives in text editors:
 | |
|     # if it's called for subdir of a project it can't find external interfaces. All text editor integrations
 | |
|     # with golangci-lint call it on a directory with the changed file.
 | |
|     check-exported: false
 | |
|   unused:
 | |
|     # treat code as a program (not a library) and report unused exported identifiers; default is false.
 | |
|     # XXX: if you enable this setting, unused will report a lot of false-positives in text editors:
 | |
|     # if it's called for subdir of a project it can't find funcs usages. All text editor integrations
 | |
|     # with golangci-lint call it on a directory with the changed file.
 | |
|     check-exported: false
 | |
|   whitespace:
 | |
|     multi-if: false   # Enforces newlines (or comments) after every multi-line if statement
 | |
|     multi-func: false # Enforces newlines (or comments) after every multi-line function signature
 | |
| 
 | |
|   wrapcheck:
 | |
|     # An array of strings that specify substrings of signatures to ignore.
 | |
|     # If this set, it will override the default set of ignored signatures.
 | |
|     # See https://github.com/tomarrell/wrapcheck#configuration for more information.
 | |
|     ignoreSigs:
 | |
|       - .Errorf(
 | |
|       - errors.New(
 | |
|       - errors.Unwrap(
 | |
|       - .Wrap(
 | |
|       - .Wrapf(
 | |
|       - .WithMessage(
 | |
|       - .WithMessagef(
 | |
|       - .WithStack(
 | |
|     ignorePackageGlobs:
 | |
|         - encoding/*
 | |
|         - github.com/pkg/*
 | |
| 
 | |
|   wsl:
 | |
|     # If true append is only allowed to be cuddled if appending value is
 | |
|     # matching variables, fields or types on line above. Default is true.
 | |
|     strict-append: true
 | |
|     # Allow calls and assignments to be cuddled as long as the lines have any
 | |
|     # matching variables, fields or types. Default is true.
 | |
|     allow-assign-and-call: true
 | |
|     # Allow assignments to be cuddled with anything. Default is false.
 | |
|     allow-assign-and-anything: false
 | |
|     # Allow multiline assignments to be cuddled. Default is true.
 | |
|     allow-multiline-assign: true
 | |
|     # Allow declarations (var) to be cuddled.
 | |
|     allow-cuddle-declarations: false
 | |
|     # Allow trailing comments in ending of blocks
 | |
|     allow-trailing-comment: false
 | |
|     # Force newlines in end of case at this limit (0 = never).
 | |
|     force-case-trailing-whitespace: 0
 | |
|     # Force cuddling of err checks with err var assignment
 | |
|     force-err-cuddling: false
 | |
|     # Allow leading comments to be separated with empty liens
 | |
|     allow-separated-leading-comment: false
 | |
|   makezero:
 | |
|     # Allow only slices initialized with a length of zero. Default is false.
 | |
|     always: false
 | |
| 
 | |
| 
 | |
|   # The custom section can be used to define linter plugins to be loaded at runtime. See README doc
 | |
|   #  for more info.
 | |
|   #custom:
 | |
|     # Each custom linter should have a unique name.
 | |
|     #example:
 | |
|       # The path to the plugin *.so. Can be absolute or local. Required for each custom linter
 | |
|       #path: /path/to/example.so
 | |
|       # The description of the linter. Optional, just for documentation purposes.
 | |
|       #description: This is an example usage of a plugin linter.
 | |
|       # Intended to point to the repo location of the linter. Optional, just for documentation purposes.
 | |
|       #original-url: github.com/golangci/example-linter
 | |
| 
 | |
| linters:
 | |
|   # please, do not use `enable-all`: it's deprecated and will be removed soon.
 | |
|   # inverted configuration with `enable-all` and `disable` is not scalable during updates of golangci-lint
 | |
|   # enable-all: true
 | |
|   disable-all: true
 | |
|   enable:
 | |
|     - typecheck     # 基本的类型检查
 | |
|     - gofmt         # 格式检查
 | |
|     - govet         # Go 语言的标准检查工具
 | |
|     - gosimple      # 简化代码的建议
 | |
|     - misspell      # 拼写错误
 | |
|     - staticcheck   # 静态检查
 | |
|     - unused        # 未使用的代码检查
 | |
|     - goimports     # 检查导入是否正确排序和格式化
 | |
|     - godot         # 注释句点检查
 | |
|     - bodyclose     # 确保 HTTP response body 被关闭
 | |
|     - errcheck      # 检查是否遗漏了错误返回值
 | |
|   fast: true
 | |
| 
 | |
| issues:
 | |
|   # List of regexps of issue texts to exclude, empty list by default.
 | |
|   # But independently from this option we use default exclude patterns,
 | |
|   # it can be disabled by `exclude-use-default: false`. To list all
 | |
|   # excluded by default patterns execute `golangci-lint run --help`
 | |
|   exclude:
 | |
|     - tools/.*
 | |
|     - test/.*
 | |
|     - third_party/.*
 | |
| 
 | |
|   # Excluding configuration per-path, per-linter, per-text and per-source
 | |
|   exclude-rules:
 | |
|     - linters:
 | |
|       - revive
 | |
|       path: (log/.*)\.go
 | |
| 
 | |
|     - linters:
 | |
|       - wrapcheck
 | |
|       path: (cmd/.*|pkg/.*)\.go
 | |
| 
 | |
|     - linters:
 | |
|       - typecheck
 | |
|         #path: (pkg/storage/.*)\.go
 | |
|       path: (internal/.*|pkg/.*)\.go
 | |
| 
 | |
|     - path: (cmd/.*|test/.*|tools/.*|internal/pump/pumps/.*)\.go
 | |
|       linters:
 | |
|         - forbidigo
 | |
| 
 | |
|     - path: (cmd/[a-z]*/.*|store/.*)\.go
 | |
|       linters:
 | |
|         - dupl
 | |
| 
 | |
|     - linters:
 | |
|         - gocritic
 | |
|       text: (hugeParam:|rangeValCopy:)
 | |
| 
 | |
|     - path: (cmd/[a-z]*/.*)\.go
 | |
|       linters:
 | |
|         - lll
 | |
| 
 | |
|     - path: (validator/.*|code/.*|validator/.*|watcher/watcher/.*)
 | |
|       linters:
 | |
|         - gochecknoinits
 | |
| 
 | |
|     - path: (internal/.*/options|internal/pump|pkg/log/options.go|internal/authzserver|tools/)
 | |
|       linters:
 | |
|         - tagliatelle
 | |
| 
 | |
|     - path: (pkg/app/.*)\.go
 | |
|       linters:
 | |
|         - unused
 | |
|         - forbidigo
 | |
| 
 | |
|     # Exclude some staticcheck messages
 | |
|     - linters:
 | |
|         - staticcheck
 | |
|       text: "SA9003:"
 | |
| 
 | |
|     # Exclude lll issues for long lines with go:generate
 | |
|     - linters:
 | |
|         - lll
 | |
|       source: "^//go:generate "
 | |
| 
 | |
|   # Independently from option `exclude` we use default exclude patterns,
 | |
|   # it can be disabled by this option. To list all
 | |
|   # excluded by default patterns execute `golangci-lint run --help`.
 | |
|   # Default value for this option is true.
 | |
|   exclude-use-default: true
 | |
| 
 | |
|   # The default value is false. If set to true exclude and exclude-rules
 | |
|   # regular expressions become case sensitive.
 | |
|   exclude-case-sensitive: false
 | |
| 
 | |
|   # The list of ids of default excludes to include or disable. By default it's empty.
 | |
|   include:
 | |
|     - EXC0002 # disable excluding of issues about comments from golint
 | |
| 
 | |
|   # Maximum issues count per one linter. Set to 0 to disable. Default is 50.
 | |
|   max-issues-per-linter: 0
 | |
| 
 | |
|   # Maximum count of issues with the same text. Set to 0 to disable. Default is 3.
 | |
|   max-same-issues: 0
 | |
| 
 | |
|   # Show only new issues: if there are unstaged changes or untracked files,
 | |
|   # only those changes are analyzed, else only changes in HEAD~ are analyzed.
 | |
|   # It's a super-useful option for integration of golangci-lint into existing
 | |
|   # large codebase. It's not practical to fix all existing issues at the moment
 | |
|   # of integration: much better don't allow issues in new code.
 | |
|   # Default is false.
 | |
|   new: false
 | |
| 
 | |
|   # Show only new issues created after git revision `REV`
 | |
|   # new-from-rev: REV
 | |
| 
 | |
|   # Show only new issues created in git patch with set file path.
 | |
|   #new-from-patch: path/to/patch/file
 | |
| 
 | |
|   # Fix found issues (if it's supported by the linter)
 | |
|   fix: true
 | |
| 
 | |
| severity:
 | |
|   # Default value is empty string.
 | |
|   # Set the default severity for issues. If severity rules are defined and the issues
 | |
|   # do not match or no severity is provided to the rule this will be the default
 | |
|   # severity applied. Severities should match the supported severity names of the
 | |
|   # selected out format.
 | |
|   # - Code climate: https://docs.codeclimate.com/docs/issues#issue-severity
 | |
|   # -   Checkstyle: https://checkstyle.sourceforge.io/property_types.html#severity
 | |
|   # -       Github: https://help.github.com/en/actions/reference/workflow-commands-for-github-actions#setting-an-error-message
 | |
|   default-severity: error
 | |
| 
 | |
|   # The default value is false.
 | |
|   # If set to true severity-rules regular expressions become case sensitive.
 | |
|   case-sensitive: false
 | |
| 
 | |
|   # Default value is empty list.
 | |
|   # When a list of severity rules are provided, severity information will be added to lint
 | |
|   # issues. Severity rules have the same filtering capability as exclude rules except you
 | |
|   # are allowed to specify one matcher per severity rule.
 | |
|   # Only affects out formats that support setting severity information.
 | |
|   rules:
 | |
|     - linters:
 | |
|       - dupl
 | |
|       severity: info |