diff --git a/app/client/keybase/keystore.go b/app/client/keybase/keystore.go index 0b21b1f57..e2e556e4d 100644 --- a/app/client/keybase/keystore.go +++ b/app/client/keybase/keystore.go @@ -222,7 +222,7 @@ func (keybase *badgerKeybase) GetAll() (addresses []string, keyPairs []crypto.Ke defer it.Close() for it.Rewind(); it.Valid(); it.Next() { item := it.Item() - err := item.Value(func(val []byte) error { + if err := item.Value(func(val []byte) error { b := make([]byte, len(val)) copy(b, val) @@ -235,8 +235,7 @@ func (keybase *badgerKeybase) GetAll() (addresses []string, keyPairs []crypto.Ke addresses = append(addresses, kp.GetAddressString()) keyPairs = append(keyPairs, kp) return nil - }) - if err != nil { + }); err != nil { return err } } diff --git a/build/linters/errs.go b/build/linters/errs.go new file mode 100644 index 000000000..bb14ee54d --- /dev/null +++ b/build/linters/errs.go @@ -0,0 +1,20 @@ +//nolint // it's not a Go code file +//go:build !codeanalysis +// +build !codeanalysis + +// This file includes our custom linters. +// If you want to add/modify an existing linter, please check out ruleguard's documentation: https://github.com/quasilyte/go-ruleguard#documentation + +package gorules + +import ( + "github.com/quasilyte/go-ruleguard/dsl" +) + +// This is a custom linter that checks ensures a use of inline error checks +func InlineErrCheck(m dsl.Matcher) { + m.Match(`$err := $x; if $err != nil { $*_ }`). + Where(m["err"].Type.Is(`error`)). + Report(`consider using inline error check: if err := $x; err != nil { $*_ }`). + Suggest(`if err := $x; err != nil { $*_ }`) +} diff --git a/consensus/hotstuff_replica.go b/consensus/hotstuff_replica.go index 80b25cee7..4b86bf113 100644 --- a/consensus/hotstuff_replica.go +++ b/consensus/hotstuff_replica.go @@ -247,8 +247,7 @@ func (m *consensusModule) applyBlock(block *coreTypes.Block) error { } // Apply all the transactions in the block - err := utilityUnitOfWork.ApplyBlock() - if err != nil { + if err := utilityUnitOfWork.ApplyBlock(); err != nil { return err } diff --git a/persistence/gov.go b/persistence/gov.go index e55c04abf..e0bbcdb38 100644 --- a/persistence/gov.go +++ b/persistence/gov.go @@ -168,8 +168,7 @@ func (p *PostgresContext) getParamsUpdated(height int64) ([]*coreTypes.Param, er // Loop over all rows returned and load them into the ParamOrFlag struct array for rows.Next() { param := new(coreTypes.Param) - err := rows.Scan(¶m.Name, ¶m.Value) - if err != nil { + if err := rows.Scan(¶m.Name, ¶m.Value); err != nil { return nil, err } param.Height = height @@ -190,8 +189,7 @@ func (p *PostgresContext) getFlagsUpdated(height int64) ([]*coreTypes.Flag, erro // Loop over all rows returned and load them into the ParamOrFlag struct array for rows.Next() { flag := new(coreTypes.Flag) - err := rows.Scan(&flag.Name, &flag.Value, &flag.Enabled) - if err != nil { + if err := rows.Scan(&flag.Name, &flag.Value, &flag.Enabled); err != nil { return nil, err } flag.Height = height diff --git a/persistence/kvstore/kvstore.go b/persistence/kvstore/kvstore.go index 38d9ac8a5..b4be6290d 100644 --- a/persistence/kvstore/kvstore.go +++ b/persistence/kvstore/kvstore.go @@ -62,8 +62,7 @@ func (store *badgerKVStore) Set(key, value []byte) error { tx := store.db.NewTransaction(true) defer tx.Discard() - err := tx.Set(key, value) - if err != nil { + if err := tx.Set(key, value); err != nil { return err } diff --git a/shared/crypto/ed25519.go b/shared/crypto/ed25519.go index 55d0181ec..f698c96cc 100644 --- a/shared/crypto/ed25519.go +++ b/shared/crypto/ed25519.go @@ -115,8 +115,7 @@ func (priv Ed25519PrivateKey) Seed() []byte { func (priv *Ed25519PrivateKey) UnmarshalJSON(data []byte) error { var privateKey string - err := json.Unmarshal(data, &privateKey) - if err != nil { + if err := json.Unmarshal(data, &privateKey); err != nil { return err } return priv.UnmarshalText([]byte(privateKey)) @@ -201,8 +200,7 @@ func (pub Ed25519PublicKey) MarshalJSON() ([]byte, error) { func (pub *Ed25519PublicKey) UnmarshalJSON(data []byte) error { var publicKey string - err := json.Unmarshal(data, &publicKey) - if err != nil { + if err := json.Unmarshal(data, &publicKey); err != nil { return err } keyBytes, err := hex.DecodeString(publicKey) diff --git a/shared/crypto/keys.go b/shared/crypto/keys.go index f1f995dba..4029ae476 100644 --- a/shared/crypto/keys.go +++ b/shared/crypto/keys.go @@ -32,8 +32,7 @@ type PrivateKey interface { func (a *Address) UnmarshalJSON(data []byte) error { var address string - err := json.Unmarshal(data, &address) - if err != nil { + if err := json.Unmarshal(data, &address); err != nil { return err } bz, err := hex.DecodeString(address)