run: timeout: 5m issues-exit-code: 1 tests: true skip-dirs: [] skip-dirs-use-default: true skip-files: [] allow-parallel-runners: true output: format: colored-line-number print-issued-lines: true print-linter-name: true uniq-by-line: true sort-results: true linters-settings: dupl: threshold: 100 # errcheck: # check-type-assertions: true # check-blank: true # exclude: .errcheckignore funlen: lines: 100 statements: 60 gocognit: min-complexity: 20 goconst: min-len: 3 min-occurrences: 3 gocritic: enabled-tags: - diagnostic - experimental - opinionated - performance - style disabled-checks: - commentedOutCode - whyNoLint settings: hugeParam: sizeThreshold: 80 rangeExprCopy: sizeThreshold: 512 rangeValCopy: sizeThreshold: 128 gocyclo: min-complexity: 15 godot: scope: declarations capital: false gofmt: simplify: true goimports: local-prefixes: go.lsp.dev/jsonrpc2 golint: min-confidence: 0.3 govet: enable-all: true check-shadowing: true disable: - fieldalignment depguard: list-type: blacklist include-go-root: true # packages-with-error-message: # - github.com/sirupsen/logrus: "logging is allowed only by logutils.Log" lll: line-length: 120 tab-width: 1 maligned: suggest-new: true misspell: locale: US ignore-words: - cancelled nakedret: max-func-lines: 30 prealloc: simple: true range-loops: true for-loops: true testpackage: skip-regexp: '.*(export)_test\.go' unparam: check-exported: true algo: cha unused: check-exported: false whitespace: multi-if: true multi-func: true linters: fast: false disabled: - deadcode # Finds unused code - errcheck # Errcheck is a program for checking for unchecked errors in go programs - exhaustivestruct # Checks if all struct's fields are initialized - forbidigo # Forbids identifiers - gci # Gci control golang package import order and make it always deterministic - gochecknoglobals # check that no global variables exist - gochecknoinits # Checks that no init functions are present in Go code - godox # Tool for detection of FIXME, TODO and other comment keywords - goerr113 # Golang linter to check the errors handling expressions - gofumpt # Gofumpt checks whether code was gofumpt-ed - goheader # Checks is file header matches to pattern - golint # Golint differs from gofmt. Gofmt reformats Go source code, whereas golint prints out style mistakes - gomnd # An analyzer to detect magic numbers - gomodguard # Allow and block list linter for direct Go module dependencies - gosec # Inspects source code for security problems - nlreturn # nlreturn checks for a new line before return and branch statements to increase code clarity - paralleltest # paralleltest detects missing usage of t.Parallel() method in your Go test - scopelint # Scopelint checks for unpinned variables in go programs - sqlclosecheck # Checks that sql.Rows and sql.Stmt are closed - unparam # Reports unused function parameters - wrapcheck # Checks that errors returned from external packages are wrapped TODO(zchee): enable - wsl # Whitespace Linter 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 - dogsled # Checks assignments with too many blank identifiers - dupl # Tool for code clone detection - errorlint # source code linter for Go software that can be used to find code that will cause problemswith the error wrapping scheme introduced in Go 1.13 - exhaustive # check exhaustiveness of enum switch statements - exportloopref # checks for pointers to enclosing loop variables - funlen # Tool for detection of long functions - gocognit # Computes and checks the cognitive complexity of functions - goconst # Finds repeated strings that could be replaced by a constant - gocritic # The most opinionated Go source code linter - 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 - goimports # Goimports does everything that gofmt does. Additionally it checks unused imports - goprintffuncname # Checks that printf-like functions are named with `f` at the end - gosimple # Linter for Go source code that specializes in simplifying a code - govet # Vet examines Go source code and reports suspicious constructs, such as Printf calls whose arguments do not align with the format string - ifshort # Checks that your code uses short syntax for if-statements whenever possible - ineffassign # Detects when assignments to existing variables are not used - lll # Reports long lines - makezero # Finds slice declarations with non-zero initial length - 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 - prealloc # Finds slice declarations that could potentially be preallocated - predeclared # find code that shadows one of Go's predeclared identifiers - rowserrcheck # checks whether Err of rows is checked successfully - staticcheck # Staticcheck is a go vet on steroids, applying a ton of static analysis checks - structcheck # Finds unused struct fields - stylecheck # Stylecheck is a replacement for golint - testpackage # linter that makes you use a separate _test package - thelper # thelper detects golang test helpers without t.Helper() call and checks the consistency of test helpers - 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 - unused # Checks Go code for unused constants, variables, functions and types - varcheck # Finds unused global variables and constants - whitespace # Tool for detection of leading and trailing whitespace issues: max-same-issues: 0 exclude-use-default: true exclude-rules: - path: _test\.go linters: - errcheck - funlen - gocognit - goconst - gocyclo - lll - maligned - wrapcheck - path: "(.*)?_example_test.go" linters: - gocritic # `TestMain` function is no longer required to call `os.Exit` since Go 1.15. # ref: https://golang.org/doc/go1.15#testing - text: "SA3000:" linters: - staticcheck # Exclude shadow checking on the variable named err - text: "shadow: declaration of \"(err|ok)\"" linters: - govet # fake implements - path: fake/fake.go linters: - errcheck # future use - path: wire.go text: "`(codeServerErrorStart|codeServerErrorEnd)` is unused" # goroutine - path: handler.go text: "Error return value of `handler` is not checked"