Go 代码检查工具 golangci-lint

一、介绍

golangci-lint 是一个代码检查工具的集合,聚集了多种 Go 代码检查工具,如 golintgo vet 等。

优点:

  • 运行速度快
  • 可以集成到 vscode、goland 等开发工具中
  • 包含了非常多种代码检查器
  • 可以集成到 CI 中
  • 这是包含的代码检查器列表:Linters

二、安装

golangci-lint 官方不建议使用 go get 方式安装,推荐使用二进制安装。

MacOS

直接使用 homebrew 安装:

brew install golangci-lint
brew upgrade golangci-lint

Linux 和 Windows

# binary will be $(go env GOPATH)/bin/golangci-lint
curl -sSfL https://raw.githubusercontent.com/Goci/golangci-lint/master/install.sh | sh -s -- -b $(go env GOPATH)/bin v1.42.1golangci-lint --version

golangci-lint 将会被安装到 GOPATH/bin 目录中,如果此目录不在环境变量路径中需要加上。

三、使用方式

命令行

在项目根目录下执行以下命令检查整个项目的代码:

golangci-lint run

其等价于:

golangci-lint run ./...

或者可以指定检查某个目录下的代码文件,指定目录时不会递归分析其子目录,要递归分析其子目录需要加上 /…:

golangci-lint run dir1 dir2/... dir3/file1.go

在没有配置文件时,golangci-lint 会使用默认的代码检查器进行检查。

使用以下命令,可以查看默认启用和关闭了哪些检查器:

golangci-lint help linters

四、集成 IDE

1. Visual Studio Code

在 vscode 配置文件中新增以下内容:

"go.lintTool":"golangci-lint",
"go.lintFlags": ["--fast"

golangci-lint 会自动查找项目中的 .golangci.yml 配置文件,不用额外配置。

2. Goland

  1. 安装插件 Go Linter

可以在 Goland 内插件市场搜索 Go Linter 直接安装。

  1. 配置 File Watchers

在 Goland 配置页面的 工具 -> File Watchers 进行配置。
点 + 按钮,选择 golangci-lint 创建。

五、排除代码检查

  1. 有时候有部分代码因为各种原因不能通过代码检查,也不能修改,可以使用注释跳过代码检查。如下所示:

    var bad_name int //nolint
    var bad_name int //nolint:golint,unused
    
  2. 可以排除一整块代码:

    //nolint
    func allIssuesInThisFunctionAreExcluded() *string {// ...
    }//nolint:govet
    var (a intb int
    )
    
  3. 一整个文件:

    //nolint:unparam
    package pkg
    

六、配置文件

golangci-lint 会自动在当前目录下查找以下名称的配置文件:

.golangci.yml
.golangci.yaml
.golangci.toml
.golangci.json

配置启用的代码选择器

linters:disable-all: trueenable:- megacheck- govetenable-all: truedisable:- maligned- preallocpresets:- bugs- unusedfast: false

示例配置
以下是官方给出的配置文件示例,包含了可以设置的选项和选项的默认值:

# This file contains all available configuration options
# with their default values.# options for analysis running
run:# default concurrency is a available CPU numberconcurrency: 4# timeout for analysis, e.g. 30s, 5m, default is 1mtimeout: 1m# exit code when at least one issue was found, default is 1issues-exit-code: 1# include test files or not, default is truetests: 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:- src/external_libs- autogenerated_by_my_lib# 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$"- lib/bad.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: readonly|vendor|mod# Allow multiple parallel golangci-lint instances running.# If false (default) - golangci-lint acquires file lock on start.allow-parallel-runners: false# output configuration options
output:# colored-line-number|line-number|json|tab|checkstyle|code-climate|junit-xml|github-actions# default is "colored-line-number"format: colored-line-number# print lines of code with issue, default is trueprint-issued-lines: true# print linter name in the end of issue text, default is trueprint-linter-name: true# make issues output unique by line, default is trueuniq-by-line: true# add a prefix to the output file references; default is no prefixpath-prefix: ""# sorts results by: filepath, line and columnsort-results: false# all available settings of specific linters
linters-settings:cyclop:# the maximal code complexity to reportmax-complexity: 10# 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: falsedogsled:# checks assignments with too many blank identifiers; default is 2max-blank-identifiers: 2dupl:# tokens count to trigger issue, 150 by defaultthreshold: 100errcheck:# 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 detailsignore: fmt:.*,io/ioutil:^Read.*# [deprecated] use exclude-functions instead.# path to a file containing a list of functions to exclude from checking# see https://github.com/kisielk/errcheck#excluding-functions for detailsexclude: /path/to/file.txt# list of functions to exclude from checking, where each entry is a single function to exclude.# see https://github.com/kisielk/errcheck#excluding-functions for detailsexclude-functions:- io/ioutil.ReadFile- io.Copy(*bytes.Buffer)- io.Copy(os.Stdout)errorlint:# Check whether fmt.Errorf uses the %w verb for formatting errors. See the readme for caveatserrorf: true# Check for plain type assertions and type switchesasserts: true# Check for plain error comparisonscomparison: trueexhaustive:# check switch statements in generated files alsocheck-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# switchdefault-signifies-exhaustive: falseexhaustivestruct:# Struct Patterns is list of expressions to match struct packages and names# The struct packages have the form example.com/package.ExampleStruct# The matching patterns can use matching syntax from https://pkg.go.dev/path#Match# If this list is empty, all structs are tested.struct-patterns:- '*.Test'- 'example.com/package.ExampleStruct'forbidigo:# Forbid the following identifiers (identifiers are written using regexp):forbid:- ^print.*$- 'fmt\.Print.*'# Exclude godoc examples from forbidigo checks.  Default is true.exclude_godoc_examples: falsefunlen:lines: 60statements: 40gci:# put imports beginning with prefix after 3rd-party packages;# only support one prefix# if not set, use goimports.local-prefixeslocal-prefixes: github.com/org/projectgocognit:# minimal code complexity to report, 30 by default (but we recommend 10-20)min-complexity: 10goconst:# minimal length of string constant, 3 by defaultmin-len: 3# minimum occurrences of constant string count to trigger issue, 3 by defaultmin-occurrences: 3# ignore test files, false by defaultignore-tests: false# look for existing constants matching the values, true by defaultmatch-constant: true# search also for duplicated numbers, false by defaultnumbers: false# minimum value, only works with goconst.numbers, 3 by defaultmin: 3# maximum value, only works with goconst.numbers, 3 by defaultmax: 3# ignore when constant is not used as function argument, true by defaultignore-calls: truegocritic:# 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# Which checks should be disabled; can't be combined with 'enabled-checks'; default is emptydisabled-checks:- regexpMust# 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:- performancedisabled-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: trueelseif:# whether to skip balanced if-else pairs (default true)skipBalanced: truehugeParam:# size in bytes that makes the warning trigger (default 80)sizeThreshold: 80nestingReduce:# min number of statements inside a branch to trigger a warning (default 5)bodyWidth: 5rangeExprCopy:# size in bytes that makes the warning trigger (default 512)sizeThreshold: 512# whether to check test functions (default true)skipTestFuncs: truerangeValCopy:# size in bytes that makes the warning trigger (default 128)sizeThreshold: 32# whether to check test functions (default true)skipTestFuncs: trueruleguard:# path to a gorules file for the ruleguard checkerrules: ''truncateCmp:# whether to skip int/uint/uintptr types (default true)skipArchDependent: trueunderef:# whether to skip (*x).method() calls where x is a pointer receiver (default true)skipRecvDeref: trueunnamedResult:# whether to check exported functionscheckExported: truegocyclo:# minimal code complexity to report, 30 by default (but we recommend 10-20)min-complexity: 10godot:# comments to be checked: `declarations`, `toplevel`, or `all`scope: declarations# list of regexps for excluding particular comment lines from checkexclude:# example: exclude comments which contain numbers# - '[0-9]+'# check that each sentence starts with a capital lettercapital: falsegodox:# 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 mergingkeywords: # default keywords are TODO, BUG, and FIXME, these can be overwritten by this setting- NOTE- OPTIMIZE # marks code that should be optimized before merging- HACK # marks hack-arounds that should be removed before merginggofmt:# simplify code: gofmt with `-s` option, true by defaultsimplify: truegofumpt:# Select the Go version to target. The default is `1.15`.lang-version: "1.15"# Choose whether or not to use the extra rules that are disabled# by defaultextra-rules: falsegoheader:values:const:# define here const type values in format k:v, for example:# COMPANY: MY COMPANYregexp:# define here regexp type values, for example# AUTHOR: .*@mycompany\.comtemplate: # |-# 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 sourcegoimports:# put imports beginning with prefix after 3rd-party packages;# it's a comma-separated list of prefixeslocal-prefixes: github.com/org/projectgolint:# minimal confidence for issues, default is 0.8min-confidence: 0.8gomnd: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: false# List of allowed `replace` directives. Default is empty.replace-allow-list:- launchpad.net/gocheck# 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: falsegomodguard:allowed:modules:                                                        # List of allowed modules# - gopkg.in/yaml.v2domains:                                                        # List of allowed module domains# - golang.orgblocked:modules:                                                        # List of blocked modules# - github.com/uudashr/go-module:                             # Blocked module#     recommendations:                                        # Recommended modules that should be used instead (Optional)#       - golang.org/x/mod#     reason: "`mod` is the official go.mod parser library."  # Reason why the recommended module should be used (Optional)versions:                                                       # List of blocked module version constraints# - github.com/mitchellh/go-homedir:                          # Blocked module with version constraint#     version: "< 1.1.0"                                      # Version constraint, see https://github.com/Masterminds/semver#basic-comparisons#     reason: "testing if blocked version constraint works."  # Reason why the version constraint exists. (Optional)local_replace_directives: false                                 # Set to true to raise lint issues for packages that are loaded from a local path via replace directivegosec:# To select a subset of rules to run.# Available rules: https://github.com/securego/gosec#available-rulesincludes:- G401- G306- G101# To specify a set of rules to explicitly exclude.# Available rules: https://github.com/securego/gosec#available-rulesexcludes:- G204# Exclude generated filesexclude-generated: true# 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-L102config:G306: "0600"G101:pattern: "(?i)example"ignore_entropy: falseentropy_threshold: "80.0"per_char_threshold: "3.0"truncate: "32"gosimple:# Select the Go version to target. The default is '1.13'.go: "1.15"# https://staticcheck.io/docs/options#checkschecks: [ "all" ]govet:# report about shadowed variablescheck-shadowing: true# settings per analyzersettings:printf: # analyzer name, run `go tool vet help` to see all analyzersfuncs: # 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# run `go tool vet help` to see all analyzersenable:- atomicalignenable-all: falsedisable:- shadowdisable-all: falsedepguard:list-type: blacklistinclude-go-root: falsepackages:- github.com/sirupsen/logruspackages-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"ifshort:# Maximum length of variable declaration measured in number of lines, after which linter won't suggest using short syntax.# Has higher priority than max-decl-chars.max-decl-lines: 1# Maximum length of variable declaration measured in number of characters, after which linter won't suggest using short syntax.max-decl-chars: 30importas:# if set to `true`, force to use alias.no-unaliased: true# List of aliasesalias:# using `servingv1` alias for `knative.dev/serving/pkg/apis/serving/v1` package- pkg: knative.dev/serving/pkg/apis/serving/v1alias: servingv1# using `autoscalingv1alpha1` alias for `knative.dev/serving/pkg/apis/autoscaling/v1alpha1` package- pkg: knative.dev/serving/pkg/apis/autoscaling/v1alpha1alias: 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$2ireturn:# 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 patternsreject:- github.com\/user\/package\/v4\.Typelll:# 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 optionline-length: 120# tab width in spaces. Default to 1.tab-width: 1makezero:# Allow only slices initialized with a length of zero. Default is false.always: falsemaligned:# print struct with more effective memory layout or not, false by defaultsuggest-new: truemisspell:# 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: USignore-words:- somewordnakedret:# make an issue if func has more lines of code than this setting and it has naked returns; default is 30max-func-lines: 30nestif:# minimal complexity of if statements to report, 5 by defaultmin-complexity: 4nilnil:# By default, nilnil checks all returned types below.checked-types:- ptr- func- iface- map- channlreturn:# size of the block (including return statement that is still "OK")# so no return split required.block-size: 1nolintlint:# Enable to ensure that nolint directives are all used. 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: true# Enable to require nolint directives to mention the specific linter being suppressed. Default is false.require-specific: trueprealloc:# 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: truerange-loops: true # Report preallocation suggestions on range loops, true by defaultfor-loops: false # Report preallocation suggestions on for loops, false by defaultpromlinter:# 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 onignore: ""# include method names and field names (i.e., qualified names) in checksq: falserowserrcheck:packages:- github.com/jmoiron/sqlxrevive:# see https://github.com/mgechev/revive#available-rules for details.ignore-generated-header: trueseverity: warningrules:- name: indent-error-flowseverity: warning- name: add-constantseverity: warningarguments:- maxLitCount: "3"allowStrs: '""'allowInts: "0,1,2"allowFloats: "0.0,0.,1.0,1.,2.0,2."staticcheck:# Select the Go version to target. The default is '1.13'.go: "1.15"# https://staticcheck.io/docs/options#checkschecks: [ "all" ]stylecheck:# Select the Go version to target. The default is '1.13'.go: "1.15"# https://staticcheck.io/docs/options#checkschecks: [ "all", "-ST1000", "-ST1003", "-ST1016", "-ST1020", "-ST1021", "-ST1022" ]# https://staticcheck.io/docs/options#dot_import_whitelistdot-import-whitelist:- fmt# https://staticcheck.io/docs/options#initialismsinitialisms: [ "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_whitelisthttp-status-code-whitelist: [ "200", "400", "404", "500" ]tagliatelle:# check the struck tag name casecase:# use the struct field name to check the name of the struct taguse-field-name: truerules:# any struct tag type can be used.# support string case: `camel`, `pascal`, `kebab`, `snake`, `goCamel`, `goPascal`, `goKebab`, `goSnake`, `upper`, `lower`json: camelyaml: camelxml: camelbson: camelavro: snakemapstructure: kebabtestpackage:# regexp pattern to skip filesskip-regexp: (export|internal)_test\.gothelper:# 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: truename: truebegin: truebenchmark:first: truename: truebegin: truetb:first: truename: truebegin: truetenv:# 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: falseunparam:# 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: falseunused:# Select the Go version to target. The default is '1.13'.go: "1.15"whitespace:multi-if: false   # Enforces newlines (or comments) after every multi-line if statementmulti-func: false # Enforces newlines (or comments) after every multi-line function signaturewrapcheck:# 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:# 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: falseallow-assign-and-call: trueallow-cuddle-declarations: falseallow-multiline-assign: trueallow-separated-leading-comment: falseallow-trailing-comment: falseforce-case-trailing-whitespace: 0force-err-cuddling: falseforce-short-decl-cuddling: falsestrict-append: true# 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 linterpath: /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-linterlinters:disable-all: trueenable:- megacheck- govetenable-all: truedisable:- maligned- preallocpresets:- bugs- unusedfast: falseissues:# 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:- abcdef# Excluding configuration per-path, per-linter, per-text and per-sourceexclude-rules:# Exclude some linters from running on tests files.- path: _test\.golinters:- gocyclo- errcheck- dupl- gosec# Exclude known linters from partially hard-vendored code,# which is impossible to exclude via "nolint" comments.- path: internal/hmac/text: "weak cryptographic primitive"linters:- gosec# Exclude some staticcheck messages- linters:- staticchecktext: "SA9003:"# Exclude lll issues for long lines with go:generate- linters:- lllsource: "^//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: false# 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: trueseverity:# 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-messagedefault-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:- duplseverity: info

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/240752.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DBA-MySql面试问题及答案-上

文章目录 1.什么是数据库?2.如何查看某个操作的语法?3.MySql的存储引擎有哪些?4.常用的2种存储引擎&#xff1f;6.可以针对表设置引擎吗&#xff1f;如何设置&#xff1f;6.选择合适的存储引擎&#xff1f;7.选择合适的数据类型8.char & varchar9.Mysql字符集10.如何选择…

第九周算法题(哈希映射,二分,Floyd算法 (含详细讲解) )

第九周算法题 第一题 题目来源&#xff1a;33. 搜索旋转排序数组 - 力扣&#xff08;LeetCode&#xff09; 题目描述&#xff1a;整数数组 nums 按升序排列&#xff0c;数组中的值 互不相同 。 在传递给函数之前&#xff0c;nums 在预先未知的某个下标 k&#xff08;0 <…

全网最全ChatGPT指令大全prompt

全网最全的ChatGPT大全提示词&#xff0c;大家可以进行下载。 AIGC ChatGPT 职场案例 AI 绘画 与 短视频制作 PowerBI 商业智能 68集 数据库Mysql 8.0 54集 数据库Oracle 21C 142集 Office 2021实战应用 Python 数据分析实战&#xff0c; ETL Informatica 数据仓库案例实战 E…

【JAVA面试题】什么是引用传递?什么是值传递?

&#x1f34e;个人博客&#xff1a;个人主页 &#x1f3c6;个人专栏&#xff1a; JAVA ⛳️ 功不唐捐&#xff0c;玉汝于成 前言 博客的正文部分可以详细介绍Java中参数传递的机制&#xff0c;强调Java是按值传递的&#xff0c;并解释了基本数据类型和对象引用在这种传…

二级分销的魅力:无限裂变创造十八亿的流水

有这么一个团队&#xff0c;仅靠这一个二级分销&#xff0c;六个月就打造了十八亿的流水。听着是不是很恐怖&#xff1f;十八亿确实是一个很大的数字&#xff0c;那么这个团队是怎么做到的呢&#xff1f;我们接着往下看。 这是一个销售减脂产品的团队。不靠网店&#xff0c;不…

【JMeter入门】—— JMeter介绍

1、什么是JMeter Apache JMeter是Apache组织开发的基于Java的压力测试工具&#xff0c;用于对软件做压力测试。它最初被设计用于Web应用测试&#xff0c;但后来扩展到其他测试领域。 &#xff08;Apache JMeter是100%纯JAVA桌面应用程序&#xff09; Apache JMeter可以用于对静…

pycharm git 版本回退

参考 https://blog.csdn.net/qq_38175912/article/details/102860195 yoyoketang 悠悠课堂

电力系统风储联合一次调频MATLAB仿真模型

微❤关注“电气仔推送”获得资料&#xff08;专享优惠&#xff09; 简介&#xff1a; 同一电力系统在不同风电渗透率下遭受同一负荷扰动时&#xff0c;其频率变化规律所示&#xff1a; &#xff08;1&#xff09;随着电力系统中风电渗透率的不断提高&#xff0c;风电零惯性响…

若依(ruoyi)管理系统标题和logo修改

1、网页上的logo 2、页面中的logo 进入ruoyi-ui --> src --> assets --> logo --> logo.png&#xff0c;把这个图片换成你自己的logo 3、网页标题 进入ruoyi-ui --> src --> layout --> components --> Sidebar --> Logo.vue&#xff0c;将里面的…

postman几种常见的请求方式

1、get请求直接拼URL形式 对于http接口&#xff0c;有get和post两种请求方式&#xff0c;当接口说明中未明确post中入参必须是json串时&#xff0c;均可用url方式请求 参数既可以写到URL中&#xff0c;也可写到参数列表中&#xff0c;都一样&#xff0c;请求时候都是拼URL 2&am…

伪装目标检测的算术不确定性建模

Modeling Aleatoric Uncertainty for Camouflaged Object Detection 伪装目标检测的算术不确定性建模背景贡献实验方法Camouflaged Object Detection Network&#xff08;伪装目标检测框架&#xff09;Online Confidence Estimation Network&#xff08;在线置信度估计网络&…

Stable Diffusion 基本原理

1 Diffusion Model的运作过程 输入一张和我们所需结果图尺寸一致的噪声图像&#xff0c;通过Denoise模块逐步减少noise&#xff0c;最终生成我们需要的效果图。 图中Denoise模块虽然是同一个&#xff0c;但是它会根据不同step的输入图像和代表noise严重程度的参数选择denoise的…

01背包详解,状态设计,滚动数组优化,通用问题求解

文章目录 0/1背包前言一、0/1背包的状态设计1、状态设计2、状态转移方程3、初始状态4、代码实现5、滚动数组优化二维优化为两个一维二维优化为一个一维&#xff0c;倒序递推 二、0/1背包的通用问题求最大值求最小值求方案数 0/1背包 前言 0/1包问题&#xff0c;作为动态规划问…

Python通过telnet批量管理配置华为交换机

名称&#xff1a;Python通过telnet批量管理配置华为交换机 测试工具&#xff1a;ensp, Visual Studio Code &#xff0c; Python3.8环境 时间&#xff1a;2023.12.23 个人备注&#xff1a;在NB 项目中&#xff0c;可以批量登录修改交换机配置&#xff0c;以此满足甲方爸爸的…

【Linux基础开发工具】gcc/g++使用make/Makefile

目录 前言 gcc/g的使用 1. 语言的发展 1.1 语言和编译器自举的过程 1.2 程序翻译的过程&#xff1a; 2. 动静态库的理解 Linux项目自动化构建工具-make/makefile 1. 快速上手使用 2. makefile/make执行顺序的理解 前言 了解完vim编辑器的使用&#xff0c;接下来就可以尝…

drawio绘制组织架构图和树形图

drawio绘制组织架构图和树形图 drawio是一款强大的图表绘制软件&#xff0c;支持在线云端版本以及windows, macOS, linux安装版。 如果想在线直接使用&#xff0c;则直接输入网址draw.io或者使用drawon(桌案), drawon.cn内部完整的集成了drawio的所有功能&#xff0c;并实现了云…

【一起学Rust | 框架篇 | Tauri2.0框架】Tauri2.0环境搭建与项目创建

文章目录 前言一、搭建 Tauri 2.0 开发环境二、创建 Tauri 2.0 项目1.创建项目2.安装依赖4. 编译运行 三、设置开发环境四、项目结构 前言 Tauri在Rust圈内成名已久&#xff0c;凭借Rust的可靠性&#xff0c;使用系统原生的Webview构建更小的App 以及开发人员可以灵活的使用各…

IDEA 中 Tomcat 日志乱码

1、服务器输出乱码 修改 File -> settings -> Editor -> General ->Console 中&#xff0c;utf-8改为GBK&#xff0c;反之改成utf-8 2、Tomcat Localhost Log 或者 Tomcat Catalina Log乱码 进入Tomcat 中的conf文件中的logging.properties 哪个有问题改哪个&…

虚拟机的下载、安装(模拟出服务器)

下载 vmware workstation&#xff08;收费的虚拟机&#xff09; 下载vbox 网址&#xff1a;Oracle VM VirtualBox&#xff08;免费的虚拟机&#xff09; 以下选择一个下载即可&#xff0c;建议下载vbox&#xff0c;因为是免费的。安装的时候默认下一步即可&#xff08;路径最好…

【数据安全】Java AES加密和解密

自我介绍 做一个简单介绍&#xff0c;酒架年近48 &#xff0c;有20多年IT工作经历&#xff0c;目前在一家500强做企业架构&#xff0e;因为工作需要&#xff0c;另外也因为兴趣涉猎比较广&#xff0c;为了自己学习建立了三个博客&#xff0c;分别是【全球IT瞭望】&#xff0c;【…