Also freeze the lnwire and record packages used by the migration. Copy the minimal subset of lnwire files (16) into payments/db/migration1/lnwire/ and all record files (6) into payments/db/migration1/record/. Three lnwire files are trimmed to avoid pulling in the full message-type dispatch tree — all changes are purely subtractive and can be verified with: diff lnwire/message.go payments/db/migration1/lnwire/message.go diff lnwire/writer.go payments/db/migration1/lnwire/writer.go diff lnwire/lnwire.go payments/db/migration1/lnwire/lnwire.go All migration1 files now import only the frozen packages, removing the live dependency on lnwire and record so future changes to those packages cannot affect migration correctness.
337 lines
8.8 KiB
YAML
337 lines
8.8 KiB
YAML
version: "2"
|
|
|
|
run:
|
|
# If you change this please also update GO_VERSION in Makefile (then run
|
|
# `make lint` to see where else it needs to be updated as well).
|
|
go: "1.25.5"
|
|
|
|
# Abort after 10 minutes.
|
|
timeout: 10m
|
|
|
|
build-tags:
|
|
- autopilotrpc
|
|
- chainrpc
|
|
- dev
|
|
- invoicesrpc
|
|
- neutrinorpc
|
|
- peersrpc
|
|
- signrpc
|
|
- walletrpc
|
|
- watchtowerrpc
|
|
- kvdb_etcd
|
|
- kvdb_postgres
|
|
- kvdb_sqlite
|
|
- integration
|
|
|
|
linters:
|
|
default: all
|
|
disable:
|
|
# We instead use our own custom line length linter called `ll` since
|
|
# then we can ignore log lines.
|
|
- lll
|
|
|
|
# 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/.
|
|
- bodyclose
|
|
- contextcheck
|
|
- nilerr
|
|
- noctx
|
|
- rowserrcheck
|
|
- sqlclosecheck
|
|
- tparallel
|
|
- unparam
|
|
- wastedassign
|
|
|
|
# Disable whitespace linters as it has conflict rules against our
|
|
# contribution guidelines.
|
|
- wsl
|
|
- wsl_v5
|
|
|
|
# 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.
|
|
- err113
|
|
|
|
# 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.
|
|
- mnd
|
|
|
|
# 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
|
|
|
|
# New linters that we haven't had time to address yet.
|
|
- testifylint
|
|
- perfsprint
|
|
- inamedparam
|
|
- copyloopvar
|
|
- tagalign
|
|
- protogetter
|
|
- revive
|
|
- depguard
|
|
- gosmopolitan
|
|
- intrange
|
|
- goconst
|
|
|
|
# Disable function order linter because we structure exported and unexported
|
|
# functions differently.
|
|
- funcorder
|
|
|
|
# Disable noinlineerr linter because we use it to inline errors.
|
|
- noinlineerr
|
|
|
|
# Disable embeddedstructfieldcheck linter because we use it to align
|
|
# structs. Because sometimes we have atomic fields that need to be aligned
|
|
# with means we need to assure that the field is at the beginning of the
|
|
# struct.
|
|
- embeddedstructfieldcheck
|
|
|
|
|
|
settings:
|
|
dupl:
|
|
# Tokens count to trigger issue.
|
|
threshold: 200
|
|
|
|
errorlint:
|
|
# Check for incorrect fmt.Errorf error wrapping.
|
|
errorf: true
|
|
|
|
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
|
|
|
|
gomoddirectives:
|
|
# See project's go.mod for the explanation why these are needed.
|
|
replace-allow-list:
|
|
- github.com/ulikunitz/xz
|
|
- github.com/gogo/protobuf
|
|
- google.golang.org/protobuf
|
|
- github.com/lightningnetwork/lnd/sqldb
|
|
replace-local: true
|
|
|
|
gosec:
|
|
excludes:
|
|
- G402 # Look for bad TLS connection settings.
|
|
- G306 # Poor file permissions used when writing to a new file.
|
|
- G601 # Implicit memory aliasing in for loop.
|
|
- G115 # Integer overflow in conversion.
|
|
|
|
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
|
|
|
|
staticcheck:
|
|
checks:
|
|
- -SA1019
|
|
|
|
tagliatelle:
|
|
case:
|
|
rules:
|
|
json: snake
|
|
|
|
usetesting:
|
|
context-background: true
|
|
|
|
whitespace:
|
|
multi-if: true
|
|
multi-func: true
|
|
|
|
custom:
|
|
ll:
|
|
type: module
|
|
description: Custom lll linter with 'S' log line exclusion.
|
|
settings:
|
|
# Max line length, lines longer will be reported.
|
|
line-length: 80
|
|
# The regex that we will use to detect the start of an `S` log line.
|
|
log-regex: ^\s*.*(L|l)og\.(Info|Debug|Trace|Warn|Error|Critical)S\(
|
|
# Tab width in spaces.
|
|
tab-width: 8
|
|
|
|
exclusions:
|
|
# Mode of the generated files analysis.
|
|
#
|
|
# - `strict`: sources are excluded by strictly following the Go generated file convention.
|
|
# Source files that have lines matching only the following regular expression will be excluded: `^// Code generated .* DO NOT EDIT\.$`
|
|
# This line must appear before the first non-comment, non-blank text in the file.
|
|
# https://go.dev/s/generatedcode
|
|
# - `lax`: sources are excluded if they contain lines like `autogenerated file`, `code generated`, `do not edit`, etc.
|
|
# - `disable`: disable the generated files exclusion.
|
|
#
|
|
# Default: strict
|
|
generated: lax
|
|
|
|
presets:
|
|
- comments
|
|
- common-false-positives
|
|
- legacy
|
|
- std-error-handling
|
|
|
|
rules:
|
|
- linters:
|
|
# Allow duplications in tests so it's easier to follow a single unit
|
|
- dupl
|
|
- funlen
|
|
- gosec
|
|
- revive
|
|
# Exclude gosec from running for tests so that tests with weak
|
|
# randomness (math/rand) will pass the linter.
|
|
path: _test\.go
|
|
|
|
- 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
|
|
- revive
|
|
path: mock*
|
|
|
|
- linters:
|
|
- funlen
|
|
- gosec
|
|
path: test*
|
|
|
|
# Allow duplicated code and fmt.Printf() in DB migrations.
|
|
- linters:
|
|
- dupl
|
|
- forbidigo
|
|
- godot
|
|
path: channeldb/migration*
|
|
|
|
# Allow duplicated code and fmt.Printf() in DB migration tests.
|
|
- linters:
|
|
- dupl
|
|
- forbidigo
|
|
- godot
|
|
path: channeldb/migtest
|
|
|
|
# Allow fmt.Printf() in commands.
|
|
- linters:
|
|
- forbidigo
|
|
path: cmd/commands/*
|
|
|
|
# Allow fmt.Printf() in config parsing.
|
|
- linters:
|
|
- forbidigo
|
|
path: config\.go
|
|
- linters:
|
|
- forbidigo
|
|
path: lnd\.go
|
|
|
|
- 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: 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*
|
|
|
|
# Skip autogenerated files for mobile and gRPC as well as copied code for
|
|
# internal use.
|
|
paths:
|
|
- third_party$
|
|
- builtin$
|
|
- examples$
|
|
- "mobile\\/.*generated\\.go"
|
|
- "\\.pb\\.go$"
|
|
- "\\.pb\\.gw\\.go$"
|
|
- "internal\\/musig2v040"
|
|
- channeldb/migration_01_to_11
|
|
- channeldb/migration/lnwire21
|
|
- payments/db/migration1/lnwire
|
|
- payments/db/migration1/record
|
|
|
|
issues:
|
|
# Only show newly introduced problems.
|
|
new-from-rev: 03eab4db64540aa5f789c617793e4459f4ba9e78
|
|
|
|
formatters:
|
|
enable:
|
|
- gci
|
|
- gofmt
|
|
- goimports
|
|
|
|
settings:
|
|
gofmt:
|
|
# simplify code: gofmt with `-s` option, true by default
|
|
simplify: true
|
|
|
|
exclusions:
|
|
generated: lax
|
|
# Skip autogenerated files for mobile and gRPC as well as copied code for
|
|
# internal use.
|
|
paths:
|
|
- third_party$
|
|
- builtin$
|
|
- examples$
|
|
- "mobile\\/.*generated\\.go"
|
|
- "\\.pb\\.go$"
|
|
- "\\.pb\\.gw\\.go$"
|
|
- "internal\\/musig2v040"
|
|
- channeldb/migration_01_to_11
|
|
- channeldb/migration/lnwire21
|