From 0c9440c972604690a8709695023c2cf06bed5f26 Mon Sep 17 00:00:00 2001 From: Alex Vanin Date: Mon, 11 Jan 2021 19:29:29 +0300 Subject: [PATCH] [#243] Update linter config Signed-off-by: Alex Vanin --- .golangci.yml | 174 +++++++++++++++----------------------------------- 1 file changed, 51 insertions(+), 123 deletions(-) diff --git a/.golangci.yml b/.golangci.yml index 7fc9abf2..882a9ff8 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -1,136 +1,64 @@ -# https://habr.com/company/roistat/blog/413175/ -# https://github.com/golangci/golangci-lint -linters-settings: - govet: - check-shadowing: false - golint: - # minimal confidence for issues, default is 0.8 - min-confidence: 0.8 - gofmt: - # simplify code: gofmt with `-s` option, true by default - simplify: true - gocyclo: - min-complexity: 30 - maligned: - suggest-new: true - dupl: - threshold: 100 - goconst: - min-len: 2 - min-occurrences: 2 - gosimple: - 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 - # Which checks should be disabled; can't be combined with 'enabled-checks'; default is empty - disabled-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: - - performance - - settings: # settings passed to gocritic - captLocal: # must be valid enabled check name - paramsOnly: true - rangeValCopy: - sizeThreshold: 32 -# depguard: -# list-type: blacklist -# include-go-root: false -# packages: -# - github.com/davecgh/go-spew/spew - 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: 120 - # tab width in spaces. Default to 1. - tab-width: 1 - 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 - 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 - 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 - - -linters: - enable-all: true - fast: false - disable: - - gochecknoglobals -# - maligned -# - prealloc -# disable-all: false -# presets: -# - bugs -# - unused +# This file contains all available configuration options +# with their default values. # options for analysis running run: - # default concurrency is a available CPU number -# concurrency: 8 - # timeout for analysis, e.g. 30s, 5m, default is 1m -# deadline: 1m - - # exit code when at least one issue was found, default is 1 -# issues-exit-code: 1 + timeout: 2m # 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: they won't be analyzed; - # can use regexp here: generated.*, regexp is applied on full path; - # default value is empty list, but next dirs are always skipped independently - # from this option's value: - # vendor$, third_party$, testdata$, examples$, Godeps$, builtin$ -# skip-dirs: -# - src/external_libs -# - autogenerated_by_my_lib - - # 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. -# 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|release|vendor + tests: false # output configuration options output: # colored-line-number|line-number|json|tab|checkstyle|code-climate, default is "colored-line-number" format: tab - # print lines of code with issue, default is true - print-issued-lines: true +# all available settings of specific linters +linters-settings: + exhaustive: + # 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: true + govet: + # report about shadowed variables + check-shadowing: false - # print linter name in the end of issue text, default is true - print-linter-name: true \ No newline at end of file +linters: + enable: + # mandatory linters + - govet + - golint + + # some default golangci-lint linters + - errcheck + - gosimple + - ineffassign + - staticcheck + - typecheck + + # extra linters + - exhaustive + - gofmt + - whitespace + - goimports + disable-all: true + fast: false + +issues: + # Excluding configuration per-path, per-linter, per-text and per-source + exclude-rules: + - path: v2 # ignore stutters in universal structures due to protobuf compatibility + linters: + - golint + text: "stutters;" + + - path: grpc # ignore case errors in grpc setters due to protobuf compatibility + linters: + - golint + text: "should be" + + - linters: # ignore SA6002 since we use pool of []byte, however we can switch to *bytes.Buffer + - staticcheck + text: "SA6002:" \ No newline at end of file