Skip to content

Commit 967fc43

Browse files
tac0turtlejackzampolin
authored andcommitted
Merge PR #188: Add linting to CI
* Add some linting to gaia - closes #187 Signed-off-by: Marko Baricevic <[email protected]> * fail tests * tests pass * address PR comments * some more strictness
1 parent 1069c5b commit 967fc43

File tree

15 files changed

+160
-81
lines changed

15 files changed

+160
-81
lines changed

.golangci.yml

+52-8
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,61 @@
11
linters:
2-
disable-all: true
32
enable:
3+
- bodyclose
4+
- deadcode
5+
- depguard
6+
- dogsled
47
- errcheck
8+
- goconst
9+
- gocritic
10+
- gofmt
11+
- goimports
512
- golint
13+
- gosec
14+
- gosimple
15+
- govet
616
- ineffassign
7-
- unconvert
17+
- interfacer
818
- misspell
19+
- maligned
20+
- nakedret
21+
- prealloc
22+
- scopelint
23+
- staticcheck
24+
- structcheck
25+
- stylecheck
26+
- typecheck
27+
- unconvert
28+
- unused
29+
- varcheck
30+
31+
issues:
32+
exclude-rules:
33+
- text: "Use of weak random number generator"
34+
linters:
35+
- gosec
36+
- text: "ST1003:"
37+
linters:
38+
- stylecheck
39+
940
linters-settings:
10-
gocyclo:
11-
min-complexity: 11
41+
dogsled:
42+
max-blank-identifiers: 3
43+
maligned:
44+
# print struct with more effective memory layout or not, false by default
45+
suggest-new: true
1246
errcheck:
13-
ignore: fmt:.*,io/ioutil:^Read.*,github.com/spf13/cobra:MarkFlagRequired,github.com/spf13/viper:BindPFlag
47+
# report about assignment of errors to blank identifier: `num, _ := strconv.Atoi(numStr)`;
48+
# default is false: such cases aren't reported by default.
49+
check-blank: true
1450
golint:
15-
min-confidence: 1.1
16-
run:
17-
tests: false
51+
# minimal confidence for issues, default is 0.8
52+
min-confidence: 0
53+
prealloc:
54+
# XXX: we don't recommend using this linter before doing performance profiling.
55+
# For most programs usage of prealloc will be a premature optimization.
56+
57+
# Report preallocation suggestions only on simple loops that have no returns/breaks/continues/gotos in them.
58+
# True by default.
59+
simple: false
60+
range-loops: true # Report preallocation suggestions on range loops, true by default
61+
for-loops: true # Report preallocation suggestions on for loops, false by default

app/app.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -34,13 +34,13 @@ import (
3434
const appName = "GaiaApp"
3535

3636
var (
37-
// default home directories for gaiacli
37+
// DefaultCLIHome default home directories for gaiacli
3838
DefaultCLIHome = os.ExpandEnv("$HOME/.gaiacli")
3939

40-
// default home directories for gaiad
40+
// DefaultNodeHome default home directories for gaiad
4141
DefaultNodeHome = os.ExpandEnv("$HOME/.gaiad")
4242

43-
// The module BasicManager is in charge of setting up basic,
43+
// ModuleBasics The module BasicManager is in charge of setting up basic,
4444
// non-dependant module elements, such as codec registration
4545
// and genesis verification.
4646
ModuleBasics = module.NewBasicManager(

app/app_test.go

+3-2
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,12 @@ import (
1717
func TestGaiadExport(t *testing.T) {
1818
db := db.NewMemDB()
1919
gapp := NewGaiaApp(log.NewTMLogger(log.NewSyncWriter(os.Stdout)), db, nil, true, 0)
20-
setGenesis(gapp)
20+
err := setGenesis(gapp)
21+
require.NoError(t, err)
2122

2223
// Making a new app object with the db, so that initchain hasn't been called
2324
newGapp := NewGaiaApp(log.NewTMLogger(log.NewSyncWriter(os.Stdout)), db, nil, true, 0)
24-
_, _, err := newGapp.ExportAppStateAndValidators(false, []string{})
25+
_, _, err = newGapp.ExportAppStateAndValidators(false, []string{})
2526
require.NoError(t, err, "ExportAppStateAndValidators should not have an error")
2627
}
2728

app/benchmarks/txsize_test.go

+4-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,10 @@ func ExampleTxSendSize() {
3131
fee := auth.NewStdFee(gas, coins)
3232
signBytes := auth.StdSignBytes("example-chain-ID",
3333
1, 1, fee, []sdk.Msg{msg1}, "")
34-
sig, _ := priv1.Sign(signBytes)
34+
sig, err := priv1.Sign(signBytes)
35+
if err != nil {
36+
return
37+
}
3538
sigs := []auth.StdSignature{{nil, sig}}
3639
tx := auth.NewStdTx([]sdk.Msg{msg1}, fee, sigs, "")
3740
fmt.Println(len(cdc.MustMarshalBinaryBare([]sdk.Msg{msg1})))

app/export.go

+8-4
Original file line numberDiff line numberDiff line change
@@ -60,14 +60,20 @@ func (app *GaiaApp) prepForZeroHeightGenesis(ctx sdk.Context, jailWhiteList []st
6060

6161
// withdraw all validator commission
6262
app.stakingKeeper.IterateValidators(ctx, func(_ int64, val staking.ValidatorI) (stop bool) {
63-
_, _ = app.distrKeeper.WithdrawValidatorCommission(ctx, val.GetOperator())
63+
_, err := app.distrKeeper.WithdrawValidatorCommission(ctx, val.GetOperator())
64+
if err != nil {
65+
log.Fatal(err)
66+
}
6467
return false
6568
})
6669

6770
// withdraw all delegator rewards
6871
dels := app.stakingKeeper.GetAllDelegations(ctx)
6972
for _, delegation := range dels {
70-
_, _ = app.distrKeeper.WithdrawDelegationRewards(ctx, delegation.DelegatorAddress, delegation.ValidatorAddress)
73+
_, err := app.distrKeeper.WithdrawDelegationRewards(ctx, delegation.DelegatorAddress, delegation.ValidatorAddress)
74+
if err != nil {
75+
log.Fatal(err)
76+
}
7177
}
7278

7379
// clear validator slash events
@@ -128,7 +134,6 @@ func (app *GaiaApp) prepForZeroHeightGenesis(ctx sdk.Context, jailWhiteList []st
128134
iter := sdk.KVStoreReversePrefixIterator(store, staking.ValidatorsKey)
129135
counter := int16(0)
130136

131-
var valConsAddrs []sdk.ConsAddress
132137
for ; iter.Valid(); iter.Next() {
133138
addr := sdk.ValAddress(iter.Key()[1:])
134139
validator, found := app.stakingKeeper.GetValidator(ctx, addr)
@@ -137,7 +142,6 @@ func (app *GaiaApp) prepForZeroHeightGenesis(ctx sdk.Context, jailWhiteList []st
137142
}
138143

139144
validator.UnbondingHeight = 0
140-
valConsAddrs = append(valConsAddrs, validator.ConsAddress())
141145
if applyWhiteList && !whiteListMap[addr.String()] {
142146
validator.Jailed = true
143147
}

app/sim_test.go

+41-14
Original file line numberDiff line numberDiff line change
@@ -252,8 +252,16 @@ func BenchmarkFullAppSimulation(b *testing.B) {
252252
config := simapp.NewConfigFromFlags()
253253

254254
var db dbm.DB
255-
dir, _ := ioutil.TempDir("", "goleveldb-app-sim")
256-
db, _ = sdk.NewLevelDB("Simulation", dir)
255+
dir, err := ioutil.TempDir("", "goleveldb-app-sim")
256+
if err != nil {
257+
fmt.Println(err)
258+
b.Fail()
259+
}
260+
db, err = sdk.NewLevelDB("Simulation", dir)
261+
if err != nil {
262+
fmt.Println(err)
263+
b.Fail()
264+
}
257265
defer func() {
258266
db.Close()
259267
_ = os.RemoveAll(dir)
@@ -310,8 +318,10 @@ func TestFullAppSimulation(t *testing.T) {
310318
}
311319

312320
var db dbm.DB
313-
dir, _ := ioutil.TempDir("", "goleveldb-app-sim")
314-
db, _ = sdk.NewLevelDB("Simulation", dir)
321+
dir, err := ioutil.TempDir("", "goleveldb-app-sim")
322+
require.NoError(t, err)
323+
db, err = sdk.NewLevelDB("Simulation", dir)
324+
require.NoError(t, err)
315325

316326
defer func() {
317327
db.Close()
@@ -364,8 +374,10 @@ func TestAppImportExport(t *testing.T) {
364374
}
365375

366376
var db dbm.DB
367-
dir, _ := ioutil.TempDir("", "goleveldb-app-sim")
368-
db, _ = sdk.NewLevelDB("Simulation", dir)
377+
dir, err := ioutil.TempDir("", "goleveldb-app-sim")
378+
require.NoError(t, err)
379+
db, err = sdk.NewLevelDB("Simulation", dir)
380+
require.NoError(t, err)
369381

370382
defer func() {
371383
db.Close()
@@ -408,8 +420,10 @@ func TestAppImportExport(t *testing.T) {
408420
require.NoError(t, err)
409421
fmt.Printf("importing genesis...\n")
410422

411-
newDir, _ := ioutil.TempDir("", "goleveldb-app-sim-2")
412-
newDB, _ := sdk.NewLevelDB("Simulation-2", dir)
423+
newDir, err := ioutil.TempDir("", "goleveldb-app-sim-2")
424+
require.NoError(t, err)
425+
newDB, err := sdk.NewLevelDB("Simulation-2", dir)
426+
require.NoError(t, err)
413427

414428
defer func() {
415429
newDB.Close()
@@ -480,8 +494,10 @@ func TestAppSimulationAfterImport(t *testing.T) {
480494
logger = log.NewNopLogger()
481495
}
482496

483-
dir, _ := ioutil.TempDir("", "goleveldb-app-sim")
484-
db, _ := sdk.NewLevelDB("Simulation", dir)
497+
dir, err := ioutil.TempDir("", "goleveldb-app-sim")
498+
require.NoError(t, err)
499+
db, err := sdk.NewLevelDB("Simulation", dir)
500+
require.NoError(t, err)
485501

486502
defer func() {
487503
db.Close()
@@ -534,8 +550,10 @@ func TestAppSimulationAfterImport(t *testing.T) {
534550

535551
fmt.Printf("Importing genesis...\n")
536552

537-
newDir, _ := ioutil.TempDir("", "goleveldb-app-sim-2")
538-
newDB, _ := sdk.NewLevelDB("Simulation-2", dir)
553+
newDir, err := ioutil.TempDir("", "goleveldb-app-sim-2")
554+
require.NoError(t, err)
555+
newDB, err := sdk.NewLevelDB("Simulation-2", dir)
556+
require.NoError(t, err)
539557

540558
defer func() {
541559
newDB.Close()
@@ -613,8 +631,16 @@ func BenchmarkInvariants(b *testing.B) {
613631
config := simapp.NewConfigFromFlags()
614632
config.AllInvariants = false
615633

616-
dir, _ := ioutil.TempDir("", "goleveldb-app-invariant-bench")
617-
db, _ := sdk.NewLevelDB("simulation", dir)
634+
dir, err := ioutil.TempDir("", "goleveldb-app-invariant-bench")
635+
if err != nil {
636+
fmt.Println(err)
637+
b.Fail()
638+
}
639+
db, err := sdk.NewLevelDB("simulation", dir)
640+
if err != nil {
641+
fmt.Println(err)
642+
b.Fail()
643+
}
618644

619645
defer func() {
620646
db.Close()
@@ -656,6 +682,7 @@ func BenchmarkInvariants(b *testing.B) {
656682
// NOTE: We use the crisis keeper as it has all the invariants registered with
657683
// their respective metadata which makes it useful for testing/benchmarking.
658684
for _, cr := range gapp.crisisKeeper.Routes() {
685+
cr := cr
659686
b.Run(fmt.Sprintf("%s/%s", cr.ModuleName, cr.Route), func(b *testing.B) {
660687
if res, stop := cr.Invar(ctx); stop {
661688
fmt.Printf("broken invariant at block %d of %d\n%s", ctx.BlockHeight()-1, config.NumBlocks, res)

cli_test/test_helpers.go

+4-1
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ const (
4545
)
4646

4747
var (
48+
// nolint:varcheck,deadcode,unused
4849
totalCoins = sdk.NewCoins(
4950
sdk.NewCoin(fee2Denom, sdk.TokensFromConsensusPower(2000000)),
5051
sdk.NewCoin(feeDenom, sdk.TokensFromConsensusPower(2000000)),
@@ -171,7 +172,7 @@ func InitFixtures(t *testing.T) (f *Fixtures) {
171172
f.GenTx(keyFoo)
172173
f.CollectGenTxs()
173174

174-
return
175+
return f
175176
}
176177

177178
// Cleanup is meant to be run at the end of a test to clean up an remaining test state
@@ -757,13 +758,15 @@ func WriteToNewTempFile(t *testing.T, s string) *os.File {
757758
return fp
758759
}
759760

761+
//nolint:deadcode,unused
760762
func marshalStdTx(t *testing.T, stdTx auth.StdTx) []byte {
761763
cdc := app.MakeCodec()
762764
bz, err := cdc.MarshalBinaryBare(stdTx)
763765
require.NoError(t, err)
764766
return bz
765767
}
766768

769+
//nolint:deadcode,unused
767770
func unmarshalStdTx(t *testing.T, s string) (stdTx auth.StdTx) {
768771
cdc := app.MakeCodec()
769772
require.Nil(t, cdc.UnmarshalJSON([]byte(s), &stdTx))

cmd/contract_tests/main.go

+1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package main
22

33
import (
44
"fmt"
5+
56
"github.com/snikch/goodman/hooks"
67
"github.com/snikch/goodman/transaction"
78
)

cmd/gaiad/replay.go

+4-1
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,10 @@ func replayTxs(rootDir string) error {
116116
return err
117117
}
118118
defer func() {
119-
_ = proxyApp.Stop()
119+
err = proxyApp.Stop()
120+
if err != nil {
121+
return
122+
}
120123
}()
121124

122125
state := tmsm.LoadState(tmDB)

cmd/gaiad/testnet.go

+1
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,7 @@ func InitTestnet(cmd *cobra.Command, config *tmconfig.Config, cdc *codec.Codec,
113113
gaiaConfig := srvconfig.DefaultConfig()
114114
gaiaConfig.MinGasPrices = minGasPrices
115115

116+
//nolint:prealloc
116117
var (
117118
genAccounts []authexported.GenesisAccount
118119
genFiles []string

cmd/gaiadebug/hack.go

+5-12
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package main
22

33
import (
4-
"encoding/base64"
54
"encoding/hex"
65
"fmt"
76
"os"
@@ -14,7 +13,6 @@ import (
1413
"github.com/spf13/cobra"
1514
"github.com/spf13/viper"
1615
abci "github.com/tendermint/tendermint/abci/types"
17-
"github.com/tendermint/tendermint/crypto/ed25519"
1816

1917
"github.com/tendermint/tendermint/libs/log"
2018

@@ -26,7 +24,7 @@ import (
2624
func runHackCmd(cmd *cobra.Command, args []string) error {
2725

2826
if len(args) != 1 {
29-
return fmt.Errorf("Expected 1 arg")
27+
return fmt.Errorf("expected 1 arg")
3028
}
3129

3230
// ".gaiad"
@@ -88,16 +86,11 @@ func runHackCmd(cmd *cobra.Command, args []string) error {
8886
}
8987
}
9088

91-
func base64ToPub(b64 string) ed25519.PubKeyEd25519 {
92-
data, _ := base64.StdEncoding.DecodeString(b64)
93-
var pubKey ed25519.PubKeyEd25519
94-
copy(pubKey[:], data)
95-
return pubKey
96-
97-
}
98-
9989
func hexToBytes(h string) []byte {
100-
trouble, _ := hex.DecodeString(h)
90+
trouble, err := hex.DecodeString(h)
91+
if err != nil {
92+
return nil
93+
}
10194
return trouble
10295

10396
}

0 commit comments

Comments
 (0)