123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283 |
- run:
- # timeout for analysis
- deadline: 10m
- # Skip autogenerated files for mobile and gRPC as well as copied code for
- # internal use.
- skip-files:
- - "mobile\\/.*generated\\.go"
- - "\\.pb\\.go$"
- - "\\.pb\\.gw\\.go$"
- - "internal\\/musig2v040"
- 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
- - kvdb_sqlite
- - integration
- linters-settings:
- errorlint:
- # Check for incorrect fmt.Errorf error wrapping.
- errorf: true
- 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.21"
- checks: ["-SA1019"]
- lll:
- # Max line length, lines longer will be reported.
- line-length: 80
- # Tab width in spaces.
- tab-width: 8
- funlen:
- # Checks the number of lines in a function.
- # If lower than 0, disable the check.
- lines: 200
- # Checks the number of statements in a function.
- statements: 80
- dupl:
- # Tokens count to trigger issue.
- threshold: 200
- nestif:
- # Minimal complexity of if statements to report.
- min-complexity: 10
- nlreturn:
- # Size of the block (including return statement that is still "OK")
- # so no return split required.
- block-size: 3
- gomnd:
- # List of numbers to exclude from analysis.
- # The numbers should be written as string.
- # Values always ignored: "1", "1.0", "0" and "0.0"
- # Default: []
- ignored-numbers:
- - '0666'
- - '0755'
- # List of function patterns to exclude from analysis.
- # Values always ignored: `time.Date`
- # Default: []
- ignored-functions:
- - 'math.*'
- - 'strconv.ParseInt'
- - 'errors.Wrap'
-
- gomoddirectives:
- replace-allow-list:
- # See go.mod for the explanation why these are needed.
- - github.com/ulikunitz/xz
- - github.com/gogo/protobuf
- - google.golang.org/protobuf
- linters:
- enable-all: true
- disable:
- # Global variables are used in many places throughout the code base.
- - gochecknoglobals
- # We want to allow short variable names.
- - varnamelen
- # We want to allow TODOs.
- - godox
- # 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
- # Deprecated linters. See https://golangci-lint.run/usage/linters/.
- - interfacer
- - golint
- - maligned
- - scopelint
- - exhaustivestruct
- - bodyclose
- - contextcheck
- - nilerr
- - noctx
- - rowserrcheck
- - sqlclosecheck
- - structcheck
- - tparallel
- - unparam
- - wastedassign
- - ifshort
- - varcheck
- - deadcode
- - nosnakecase
- # Disable gofumpt as it has weird behavior regarding formatting multiple
- # lines for a function which is in conflict with our contribution
- # guidelines. See https://github.com/mvdan/gofumpt/issues/235.
- - gofumpt
- # Disable whitespace linter as it has conflict rules against our
- # contribution guidelines. See https://github.com/bombsimon/wsl/issues/109.
- #
- # TODO(yy): bring it back when the above issue is fixed.
- - wsl
- # Allow using default empty values.
- - exhaustruct
- # Allow exiting case select faster by putting everything in default.
- - exhaustive
- # Allow tests to be put in the same package.
- - testpackage
- # Don't run the cognitive related linters.
- - gocognit
- - gocyclo
- - maintidx
- - cyclop
- # Allow customized interfaces to be returned from functions.
- - ireturn
- # Disable too many blank identifiers check. We won't be able to run this
- # unless a large refactor has been applied to old code.
- - dogsled
- # We don't wrap errors.
- - wrapcheck
- # Allow dynamic errors.
- - goerr113
- # We use ErrXXX instead.
- - errname
- # Disable nil check to allow returning multiple nil values.
- - nilnil
-
- # We often split tests into separate test functions. If we are forced to
- # call t.Helper() within those functions, we lose the information where
- # exactly a test failed in the generated failure stack trace.
- - thelper
-
- # The linter is too aggressive and doesn't add much value since reviewers
- # will also catch magic numbers that make sense to extract.
- - gomnd
- # Some of the tests cannot be parallelized. On the other hand, we don't
- # gain much performance with this check so we disable it for now until
- # unit tests become our CI bottleneck.
- - paralleltest
- issues:
- # Only show newly introduced problems.
- new-from-rev: 8c66353e4c02329abdacb5a8df29998035ec2e24
- 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
- - funlen
- - revive
- # Allow duplications in tests so it's easier to follow a single unit
- # test.
- - dupl
- - path: mock*
- linters:
- - revive
- # forcetypeassert is skipped for the mock because the test would fail
- # if the returned value doesn't match the type, so there's no need to
- # check the convert.
- - forcetypeassert
- - path: test*
- linters:
- - gosec
- - funlen
- # 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
- - path: lnmock/*
- linters:
- # forcetypeassert is skipped for the mock because the test would fail
- # if the returned value doesn't match the type, so there's no need to
- # check the convert.
- - forcetypeassert
- - path: mock*
- linters:
- # forcetypeassert is skipped for the mock because the test would fail
- # if the returned value doesn't match the type, so there's no need to
- # check the convert.
- - forcetypeassert
|