Skip to content

Commit 33d6700

Browse files
committed
enable errchkjson; fix violations; add comments
1 parent dadcdf3 commit 33d6700

3 files changed

Lines changed: 39 additions & 15 deletions

File tree

.golangci.yml

Lines changed: 25 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ linters:
1313
- dupword
1414
- durationcheck
1515
- errcheck
16+
- errchkjson
1617
# Type assertion and comparison validation on errors. https://github.com/polyfloyd/go-errorlint
1718
- errorlint
1819
# Enum and maps used on switch statements are exhaustive
@@ -29,6 +30,8 @@ linters:
2930
# Check for simple misspellings of words.
3031
- mnd
3132
- misspell
33+
# TODO: enable in the future
34+
# - modernize
3235
- nilerr
3336
- nilnesserr
3437
- noctx
@@ -102,6 +105,17 @@ linters:
102105
- pkg: "github.com/pkg/errors"
103106
desc: Should be replaced by standard lib errors package
104107

108+
# errcheck:
109+
# # Report unchecked type assertion failures, such as `value := raw.(string)`.
110+
# check-type-assertions: true
111+
# # Report errors deliberately assigned to `_`, such as `b, _ := json.Marshal(v)`.
112+
# check-blank: true
113+
# # Consider enabling after auditing current exclusions. The default excludes
114+
# # common cases such as fmt.Print* and io.Copy to stdout/stderr.
115+
# disable-default-exclusions: true
116+
# # exclude-functions:
117+
# # - io.Copy(os.Stdout)
118+
105119
errorlint:
106120
errorf: false
107121
exhaustive:
@@ -148,11 +162,10 @@ linters:
148162
- sloppyLen
149163
- underef
150164
- unslice
151-
# TODO: Add this later.
152-
# gosec:
153-
# config:
154-
# global:
155-
# audit: true
165+
gosec:
166+
config:
167+
global:
168+
audit: true
156169
govet:
157170
# The following list includes all the linters that are disabled by default.
158171
# Uncomment any of these to enable them:
@@ -161,7 +174,9 @@ linters:
161174
# - atomicalign # Check for non-64-bits-aligned arguments to sync/atomic functions
162175
- deepequalerrors # Check for calls of reflect.DeepEqual on error values
163176
- defers # Check for common mistakes in defer statements
164-
# - fieldalignment # Find structs that would use less memory if their fields were sorted (too noisy: 200+ issues)
177+
# skip: memory isn't a major problem in the Guardians at the moment, and the work
178+
# involved with reordering struct names has a cost in terms of readability and time.
179+
# - fieldalignment # Find structs that would use less memory if their fields were sorted
165180
# - findcall # Find calls to a particular function
166181
- ifaceassert # Detect impossible interface-to-interface assertions
167182
- loopclosure # Check for loop variable capture in goroutines
@@ -222,8 +237,11 @@ linters:
222237
- path: pkg/txverifier/sui_test.go
223238
text: 'G101: Potential hardcoded credentials'
224239
- linters:
240+
# The mainnet tokens file contains hard-coded token info, so duplicate words, misspelled words,
241+
# and magic numbers are totally fine.
225242
- dupword
226243
- misspell
244+
- mnd
227245
path: .*generated_mainnet_tokens\.go$
228246
text: ".*" # This matches any text in the file
229247
- linters:
@@ -243,7 +261,7 @@ linters:
243261
- linters:
244262
- mnd
245263
# NOTE: Auto-generated list of exclusions based on which files had magic number violations when this rule was added. Ideally each should be fixed.
246-
path: node/cmd/ccq/http\.go|node/cmd/ccq/p2p\.go|node/cmd/ccq/pending_request\.go|node/cmd/ccq/query_server\.go|node/cmd/ccq/status\.go|node/cmd/ccq/utils\.go|node/cmd/guardiand/adminclient\.go|node/cmd/guardiand/adminnodes\.go|node/cmd/guardiand/admintemplate\.go|node/cmd/guardiand/node\.go|node/cmd/spy/spy\.go|node/cmd/txverifier/evm\.go|node/hack/accountant/send_obs\.go|node/hack/encrypt/encrypt\.go|node/hack/evm_test/wstest\.go|node/hack/parse_eth_tx/parse_eth_tx\.go|node/hack/query/ccqlistener/ccqlistener\.go|node/hack/query/send_req\.go|node/hack/query/utils/fetchCurrentGuardianSet\.go|node/hack/release_verification/guardian_vaa_stats\.go|node/hack/repair_eth/repair_eth\.go|node/hack/repair_solana/repair\.go|node/pkg/accountant/watcher\.go|node/pkg/adminrpc/adminserver\.go|node/pkg/altpub/alternate_pub\.go|node/pkg/common/armoredKey\.go|node/pkg/common/chainlock\.go|node/pkg/common/grpc\.go|node/pkg/common/nodekey\.go|node/pkg/common/sysutils\.go|node/pkg/db/db\.go|node/pkg/db/manager\.go|node/pkg/db/open\.go|node/pkg/devnet/hostname\.go|node/pkg/governor/devnet_config\.go|node/pkg/governor/flow_cancel_tokens\.go|node/pkg/governor/generated_mainnet_tokens\.go|node/pkg/governor/governor_monitoring\.go|node/pkg/governor/governor_prices\.go|node/pkg/governor/governor\.go|node/pkg/governor/mainnet_chains\.go|node/pkg/governor/manual_tokens\.go|node/pkg/governor/testnet_config\.go|node/pkg/guardiansigner/amazonkms\.go|node/pkg/guardiansigner/guardiansigner\.go|node/pkg/gwrelayer/gwrelayer\.go|node/pkg/manager/dogecoin/script\.go|node/pkg/manager/dogecoin/transaction\.go|node/pkg/manager/manager\.go|node/pkg/node/adminServiceRunnable\.go|node/pkg/node/publicwebRunnable\.go|node/pkg/notary/admincommands\.go|node/pkg/p2p/ccq_p2p\.go|node/pkg/p2p/netmetrics\.go|node/pkg/p2p/p2p\.go|node/pkg/processor/observation\.go|node/pkg/publicrpc/publicrpcserver\.go|node/pkg/query/query\.go|node/pkg/query/response\.go|node/pkg/supervisor/supervisor_processor\.go|node/pkg/telemetry/loki\.go|node/pkg/telemetry/prom_remote_write/format\.go|node/pkg/txverifier/evm\.go|node/pkg/txverifier/evmtypes\.go|node/pkg/txverifier/suitypes\.go|node/pkg/txverifier/utils\.go|node/pkg/watchers/algorand/watcher\.go|node/pkg/watchers/aptos/watcher\.go|node/pkg/watchers/cosmwasm/watcher\.go|node/pkg/watchers/evm/ccq_backfill\.go|node/pkg/watchers/evm/ccq\.go|node/pkg/watchers/evm/chain_config\.go|node/pkg/watchers/evm/connectors/batch_poller\.go|node/pkg/watchers/evm/connectors/block_utils\.go|node/pkg/watchers/evm/connectors/ethereum\.go|node/pkg/watchers/evm/connectors/instant_finality\.go|node/pkg/watchers/evm/custom_consistency_level\.go|node/pkg/watchers/evm/reobserve\.go|node/pkg/watchers/evm/utils\.go|node/pkg/watchers/evm/verify_chain_config/verify\.go|node/pkg/watchers/evm/watcher\.go|node/pkg/watchers/ibc/watcher\.go|node/pkg/watchers/near/finalizer\.go|node/pkg/watchers/near/nearapi/mock/mock_server\.go|node/pkg/watchers/near/nearapi/nearapi\.go|node/pkg/watchers/near/nearapi/types\.go|node/pkg/watchers/near/tx_processing\.go|node/pkg/watchers/near/watcher\.go|node/pkg/watchers/solana/client\.go|node/pkg/watchers/sui/watcher\.go|node/pkg/wormconn/clientconn\.go|node/pkg/wormconn/send_tx\.go|sdk/chainid_generator\.go|sdk/devnet_consts\.go|sdk/mainnet_consts\.go|sdk/p2p_consts\.go|sdk/testnet_consts\.go|sdk/token_bridge\.go|sdk/vaa/chainid_generated\.go|sdk/vaa/governance\.go|sdk/vaa/payloads\.go|sdk/vaa/quorum\.go|sdk/vaa/structs\.go
264+
path: node/cmd/ccq/http\.go|node/cmd/ccq/p2p\.go|node/cmd/ccq/pending_request\.go|node/cmd/ccq/query_server\.go|node/cmd/ccq/status\.go|node/cmd/ccq/utils\.go|node/cmd/guardiand/adminclient\.go|node/cmd/guardiand/adminnodes\.go|node/cmd/guardiand/admintemplate\.go|node/cmd/guardiand/node\.go|node/cmd/spy/spy\.go|node/cmd/txverifier/evm\.go|node/hack/accountant/send_obs\.go|node/hack/encrypt/encrypt\.go|node/hack/evm_test/wstest\.go|node/hack/parse_eth_tx/parse_eth_tx\.go|node/hack/query/ccqlistener/ccqlistener\.go|node/hack/query/send_req\.go|node/hack/query/utils/fetchCurrentGuardianSet\.go|node/hack/release_verification/guardian_vaa_stats\.go|node/hack/repair_eth/repair_eth\.go|node/hack/repair_solana/repair\.go|node/pkg/accountant/watcher\.go|node/pkg/adminrpc/adminserver\.go|node/pkg/altpub/alternate_pub\.go|node/pkg/common/armoredKey\.go|node/pkg/common/chainlock\.go|node/pkg/common/grpc\.go|node/pkg/common/nodekey\.go|node/pkg/common/sysutils\.go|node/pkg/db/db\.go|node/pkg/db/manager\.go|node/pkg/db/open\.go|node/pkg/devnet/hostname\.go|node/pkg/governor/devnet_config\.go|node/pkg/governor/flow_cancel_tokens\.go|node/pkg/governor/governor_monitoring\.go|node/pkg/governor/governor_prices\.go|node/pkg/governor/governor\.go|node/pkg/governor/mainnet_chains\.go|node/pkg/governor/manual_tokens\.go|node/pkg/governor/testnet_config\.go|node/pkg/guardiansigner/amazonkms\.go|node/pkg/guardiansigner/guardiansigner\.go|node/pkg/gwrelayer/gwrelayer\.go|node/pkg/manager/dogecoin/script\.go|node/pkg/manager/dogecoin/transaction\.go|node/pkg/manager/manager\.go|node/pkg/node/adminServiceRunnable\.go|node/pkg/node/publicwebRunnable\.go|node/pkg/notary/admincommands\.go|node/pkg/p2p/ccq_p2p\.go|node/pkg/p2p/netmetrics\.go|node/pkg/p2p/p2p\.go|node/pkg/processor/observation\.go|node/pkg/publicrpc/publicrpcserver\.go|node/pkg/query/query\.go|node/pkg/query/response\.go|node/pkg/supervisor/supervisor_processor\.go|node/pkg/telemetry/loki\.go|node/pkg/telemetry/prom_remote_write/format\.go|node/pkg/txverifier/evm\.go|node/pkg/txverifier/evmtypes\.go|node/pkg/txverifier/suitypes\.go|node/pkg/txverifier/utils\.go|node/pkg/watchers/algorand/watcher\.go|node/pkg/watchers/aptos/watcher\.go|node/pkg/watchers/cosmwasm/watcher\.go|node/pkg/watchers/evm/ccq_backfill\.go|node/pkg/watchers/evm/ccq\.go|node/pkg/watchers/evm/chain_config\.go|node/pkg/watchers/evm/connectors/batch_poller\.go|node/pkg/watchers/evm/connectors/block_utils\.go|node/pkg/watchers/evm/connectors/ethereum\.go|node/pkg/watchers/evm/connectors/instant_finality\.go|node/pkg/watchers/evm/custom_consistency_level\.go|node/pkg/watchers/evm/reobserve\.go|node/pkg/watchers/evm/utils\.go|node/pkg/watchers/evm/verify_chain_config/verify\.go|node/pkg/watchers/evm/watcher\.go|node/pkg/watchers/ibc/watcher\.go|node/pkg/watchers/near/finalizer\.go|node/pkg/watchers/near/nearapi/mock/mock_server\.go|node/pkg/watchers/near/nearapi/nearapi\.go|node/pkg/watchers/near/nearapi/types\.go|node/pkg/watchers/near/tx_processing\.go|node/pkg/watchers/near/watcher\.go|node/pkg/watchers/solana/client\.go|node/pkg/watchers/sui/watcher\.go|node/pkg/wormconn/clientconn\.go|node/pkg/wormconn/send_tx\.go|sdk/chainid_generator\.go|sdk/devnet_consts\.go|sdk/mainnet_consts\.go|sdk/p2p_consts\.go|sdk/testnet_consts\.go|sdk/token_bridge\.go|sdk/vaa/chainid_generated\.go|sdk/vaa/governance\.go|sdk/vaa/payloads\.go|sdk/vaa/quorum\.go|sdk/vaa/structs\.go
247265
# ST1003 exclusions for packages that need time to migrate to CamelCase naming
248266
# Exclude test files from ST1003 - they can be fixed separately
249267
- linters:

node/pkg/db/accountant.go

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -104,11 +104,14 @@ func (d *Database) AcctGetData(logger *zap.Logger) ([]*common.MessagePublication
104104
}
105105

106106
func (d *Database) AcctStorePendingTransfer(msg *common.MessagePublication) error {
107-
b, _ := json.Marshal(msg)
107+
b, err := json.Marshal(msg)
108+
if err != nil {
109+
return fmt.Errorf("failed to marshal accountant pending transfer for tx %s: %w", msg.MessageIDString(), err)
110+
}
108111

109-
err := d.db.Update(func(txn *badger.Txn) error {
110-
if err := txn.Set(acctPendingTransferMsgID(msg.MessageIDString()), b); err != nil {
111-
return err
112+
err = d.db.Update(func(txn *badger.Txn) error {
113+
if setErr := txn.Set(acctPendingTransferMsgID(msg.MessageIDString()), b); setErr != nil {
114+
return setErr
112115
}
113116
return nil
114117
})

node/pkg/db/accountant_test.go

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -304,11 +304,14 @@ func setupLogsCapture(t testing.TB) (*zap.Logger, *observer.ObservedLogs) {
304304
}
305305

306306
func (d *Database) acctStoreOldPendingTransfer(msg *OldMessagePublication) error {
307-
b, _ := json.Marshal(msg)
307+
b, err := json.Marshal(msg)
308+
if err != nil {
309+
return fmt.Errorf("failed to marshal old accountant pending transfer for tx %s: %w", msg.MessageIDString(), err)
310+
}
308311

309-
err := d.db.Update(func(txn *badger.Txn) error {
310-
if err := txn.Set(acctOldPendingTransferMsgID(msg.MessageIDString()), b); err != nil {
311-
return err
312+
err = d.db.Update(func(txn *badger.Txn) error {
313+
if setErr := txn.Set(acctOldPendingTransferMsgID(msg.MessageIDString()), b); setErr != nil {
314+
return setErr
312315
}
313316
return nil
314317
})

0 commit comments

Comments
 (0)