run: # timeout for analysis deadline: 10m # Skip autogenerated files for mobile and gRPC. skip-files: - "mobile\\/.*generated\\.go" - "\\.pb\\.go$" - "\\.pb\\.gw\\.go$" skip-dirs: - channeldb/migration_01_to_11 - channeldb/migration/lnwire21 build-tags: - autopilotrpc - chainrpc - dev - invoicesrpc - neutrinorpc - peersrpc - signrpc - walletrpc - watchtowerrpc - kvdb_etcd - kvdb_postgres linters-settings: govet: # Don't report about shadowed variables check-shadowing: false gofmt: # simplify code: gofmt with `-s` option, true by default simplify: true tagliatelle: case: rules: json: snake whitespace: multi-func: true multi-if: true gosec: excludes: - G402 # Look for bad TLS connection settings. - G306 # Poor file permissions used when writing to a new file. staticcheck: go: "1.18" checks: ["-SA1019"] linters: enable-all: true disable: # Global variables are used in many places throughout the code base. - gochecknoglobals # Some lines are over 80 characters on purpose and we don't want to make them # even longer by marking them as 'nolint'. - lll # We want to allow short variable names. - varnamelen # We want to allow TODOs. - godox # We have long functions, especially in tests. Moving or renaming those would # trigger funlen problems that we may not want to solve at that time. - funlen # Disable for now as we haven't yet tuned the sensitivity to our codebase # yet. Enabling by default for example, would also force new contributors to # potentially extensively refactor code, when they want to smaller change to # land. - gocyclo - gocognit - cyclop # Instances of table driven tests that don't pre-allocate shouldn't trigger # the linter. - prealloc # Init functions are used by loggers throughout the codebase. - gochecknoinits # Causes stack overflow, see https://github.com/polyfloyd/go-errorlint/issues/19. - errorlint # Deprecated linters. See https://golangci-lint.run/usage/linters/. - interfacer - golint - maligned - scopelint # New linters that need a code adjustment first. - wrapcheck - nolintlint - paralleltest - tparallel - testpackage - gofumpt - gomoddirectives - ireturn - maintidx - nlreturn - dogsled - gci - containedctx - contextcheck - errname - exhaustivestruct - goerr113 - gomnd - ifshort - noctx - nestif - wsl - exhaustive - forcetypeassert - nilerr - nilnil - stylecheck - thelper issues: # Only show newly introduced problems. new-from-rev: 01f696afce2f9c0d4ed854edefa3846891d01d8a exclude-rules: # Exclude gosec from running for tests so that tests with weak randomness # (math/rand) will pass the linter. - path: _test\.go linters: - gosec - path: test* linters: - gosec # Allow duplicated code and fmt.Printf() in DB migrations. - path: channeldb/migration* linters: - dupl - forbidigo - godot # Allow duplicated code and fmt.Printf() in DB migration tests. - path: channeldb/migtest linters: - dupl - forbidigo - godot # Allow fmt.Printf() in lncli. - path: cmd/lncli/* linters: - forbidigo # Allow fmt.Printf() in config parsing. - path: config\.go linters: - forbidigo - path: lnd\.go linters: - forbidigo # Fix false positives because of build flags in itest directory. - path: lntest/itest/.* linters: - unused - deadcode - unparam - govet