linting: add to Makefile & do some fixes

This commit is contained in:
Zach Ramsay 2017-09-22 11:42:29 -04:00
parent 2130c329eb
commit d6e03d2368
20 changed files with 82 additions and 51 deletions

View File

@ -1,11 +1,15 @@
.PHONY: all test get_vendor_deps ensure_tools .PHONY: all test get_vendor_deps ensure_tools
GOTOOLS = \ GOTOOLS = \
github.com/Masterminds/glide github.com/Masterminds/glide \
github.com/alecthomas/gometalinter
REPO:=github.com/tendermint/tmlibs REPO:=github.com/tendermint/tmlibs
all: test all: test
NOVENDOR = go list github.com/tendermint/tmlibs/... | grep -v /vendor/
test: test:
go test `glide novendor` go test `glide novendor`
@ -16,3 +20,40 @@ get_vendor_deps: ensure_tools
ensure_tools: ensure_tools:
go get $(GOTOOLS) go get $(GOTOOLS)
metalinter: ensure_tools
@gometalinter --install
gometalinter --vendor --deadline=600s --enable-all --disable=lll ./...
metalinter_test: ensure_tools
@gometalinter --install
gometalinter --vendor --deadline=600s --disable-all \
--enable=deadcode \
--enable=gas \
--enable=goconst \
--enable=goimports \
--enable=gosimple \
--enable=gotype \
--enable=ineffassign \
--enable=megacheck \
--enable=misspell \
--enable=staticcheck \
--enable=safesql \
--enable=structcheck \
--enable=unconvert \
--enable=unused \
--enable=varcheck \
--enable=vetshadow \
--enable=interfacer \
--enable=unparam \
--enable=vet \
./...
#--enable=aligncheck \
#--enable=dupl \
#--enable=errcheck \
#--enable=gocyclo \
#--enable=golint \ <== comments on anything exported
#--enable=interfacer \
#--enable=unparam \
#--enable=vet \

View File

@ -1,12 +1,14 @@
// nolint: goimports
package autofile package autofile
import ( import (
. "github.com/tendermint/tmlibs/common"
"os" "os"
"sync/atomic" "sync/atomic"
"syscall" "syscall"
"testing" "testing"
"time" "time"
. "github.com/tendermint/tmlibs/common"
) )
func TestSIGHUP(t *testing.T) { func TestSIGHUP(t *testing.T) {

View File

@ -107,7 +107,6 @@ func (g *Group) OnStart() error {
func (g *Group) OnStop() { func (g *Group) OnStop() {
g.BaseService.OnStop() g.BaseService.OnStop()
g.ticker.Stop() g.ticker.Stop()
return
} }
func (g *Group) SetHeadSizeLimit(limit int64) { func (g *Group) SetHeadSizeLimit(limit int64) {
@ -568,8 +567,7 @@ func (gr *GroupReader) ReadLine() (string, error) {
bytesRead, err := gr.curReader.ReadBytes('\n') bytesRead, err := gr.curReader.ReadBytes('\n')
if err == io.EOF { if err == io.EOF {
// Open the next file // Open the next file
err := gr.openFile(gr.curIndex + 1) if err := gr.openFile(gr.curIndex + 1); err != nil {
if err != nil {
return "", err return "", err
} }
if len(bytesRead) > 0 && bytesRead[len(bytesRead)-1] == byte('\n') { if len(bytesRead) > 0 && bytesRead[len(bytesRead)-1] == byte('\n') {

View File

@ -100,8 +100,7 @@ func TestCheckHeadSizeLimit(t *testing.T) {
// Write 1000 bytes 999 times. // Write 1000 bytes 999 times.
for i := 0; i < 999; i++ { for i := 0; i < 999; i++ {
err := g.WriteLine(RandStr(999)) if err := g.WriteLine(RandStr(999)); err != nil {
if err != nil {
t.Fatal("Error appending to head", err) t.Fatal("Error appending to head", err)
} }
} }

View File

@ -22,7 +22,7 @@ func initSighupWatcher() {
signal.Notify(c, syscall.SIGHUP) signal.Notify(c, syscall.SIGHUP)
go func() { go func() {
for _ = range c { for range c {
sighupWatchers.closeAll() sighupWatchers.closeAll()
atomic.AddInt32(&sighupCounter, 1) atomic.AddInt32(&sighupCounter, 1)
} }

View File

@ -49,8 +49,6 @@ func TestParseLogLevel(t *testing.T) {
t.Fatal(err) t.Fatal(err)
} }
logger = logger
buf.Reset() buf.Reset()
logger.With("module", "wire").Debug("Kingpin") logger.With("module", "wire").Debug("Kingpin")

View File

@ -55,6 +55,7 @@ func TestSmall(t *testing.T) {
This test is quite hacky because it relies on SetFinalizer This test is quite hacky because it relies on SetFinalizer
which isn't guaranteed to run at all. which isn't guaranteed to run at all.
*/ */
// nolint: megacheck
func _TestGCFifo(t *testing.T) { func _TestGCFifo(t *testing.T) {
const numElements = 1000000 const numElements = 1000000
@ -102,6 +103,7 @@ func _TestGCFifo(t *testing.T) {
This test is quite hacky because it relies on SetFinalizer This test is quite hacky because it relies on SetFinalizer
which isn't guaranteed to run at all. which isn't guaranteed to run at all.
*/ */
// nolint: megacheck
func _TestGCRandom(t *testing.T) { func _TestGCRandom(t *testing.T) {
const numElements = 1000000 const numElements = 1000000
@ -132,7 +134,7 @@ func _TestGCRandom(t *testing.T) {
for _, i := range rand.Perm(numElements) { for _, i := range rand.Perm(numElements) {
el := els[i] el := els[i]
l.Remove(el) l.Remove(el)
el = el.Next() _ = el.Next()
} }
runtime.GC() runtime.GC()
@ -153,7 +155,7 @@ func TestScanRightDeleteRandom(t *testing.T) {
l := New() l := New()
stop := make(chan struct{}) stop := make(chan struct{})
els := make([]*CElement, numElements, numElements) els := make([]*CElement, numElements)
for i := 0; i < numElements; i++ { for i := 0; i < numElements; i++ {
el := l.PushBack(i) el := l.PushBack(i)
els[i] = el els[i] = el

View File

@ -10,7 +10,7 @@ type CMap struct {
func NewCMap() *CMap { func NewCMap() *CMap {
return &CMap{ return &CMap{
m: make(map[string]interface{}, 0), m: make(map[string]interface{}),
} }
} }
@ -48,7 +48,7 @@ func (cm *CMap) Size() int {
func (cm *CMap) Clear() { func (cm *CMap) Clear() {
cm.l.Lock() cm.l.Lock()
defer cm.l.Unlock() defer cm.l.Unlock()
cm.m = make(map[string]interface{}, 0) cm.m = make(map[string]interface{})
} }
func (cm *CMap) Values() []interface{} { func (cm *CMap) Values() []interface{} {

View File

@ -21,7 +21,7 @@ func (se StackError) Error() string {
// panic wrappers // panic wrappers
// A panic resulting from a sanity check means there is a programmer error // A panic resulting from a sanity check means there is a programmer error
// and some gaurantee is not satisfied. // and some guarantee is not satisfied.
func PanicSanity(v interface{}) { func PanicSanity(v interface{}) {
panic(Fmt("Panicked on a Sanity Check: %v", v)) panic(Fmt("Panicked on a Sanity Check: %v", v))
} }

View File

@ -95,7 +95,7 @@ func TestWriteCode(t *testing.T) {
common.WriteCode(w, &marshalFailer{}, code) common.WriteCode(w, &marshalFailer{}, code)
wantCode := http.StatusBadRequest wantCode := http.StatusBadRequest
assert.Equal(t, w.Code, wantCode, "#%d", i) assert.Equal(t, w.Code, wantCode, "#%d", i)
assert.True(t, strings.Contains(string(w.Body.Bytes()), errFooFailed.Error()), assert.True(t, strings.Contains(w.Body.String(), errFooFailed.Error()),
"#%d: expected %q in the error message", i, errFooFailed) "#%d: expected %q in the error message", i, errFooFailed)
} }
} }

View File

@ -8,6 +8,7 @@ import (
"os" "os"
"os/signal" "os/signal"
"strings" "strings"
"syscall"
) )
var ( var (
@ -17,7 +18,7 @@ var (
func TrapSignal(cb func()) { func TrapSignal(cb func()) {
c := make(chan os.Signal, 1) c := make(chan os.Signal, 1)
signal.Notify(c, os.Interrupt) signal.Notify(c, os.Interrupt)
signal.Notify(c, os.Kill) signal.Notify(c, syscall.SIGTERM)
go func() { go func() {
for sig := range c { for sig := range c {
fmt.Printf("captured %v, exiting...\n", sig) fmt.Printf("captured %v, exiting...\n", sig)
@ -83,12 +84,7 @@ func MustReadFile(filePath string) []byte {
} }
func WriteFile(filePath string, contents []byte, mode os.FileMode) error { func WriteFile(filePath string, contents []byte, mode os.FileMode) error {
err := ioutil.WriteFile(filePath, contents, mode) return ioutil.WriteFile(filePath, contents, mode)
if err != nil {
return err
}
// fmt.Printf("File written to %v.\n", filePath)
return nil
} }
func MustWriteFile(filePath string, contents []byte, mode os.FileMode) { func MustWriteFile(filePath string, contents []byte, mode os.FileMode) {

View File

@ -31,10 +31,7 @@ func LeftPadString(s string, totalLength int) string {
func IsHex(s string) bool { func IsHex(s string) bool {
if len(s) > 2 && s[:2] == "0x" { if len(s) > 2 && s[:2] == "0x" {
_, err := hex.DecodeString(s[2:]) _, err := hex.DecodeString(s[2:])
if err != nil { return err == nil
return false
}
return true
} }
return false return false
} }

View File

@ -14,7 +14,7 @@ import (
func TestAddListenerForEventFireOnce(t *testing.T) { func TestAddListenerForEventFireOnce(t *testing.T) {
evsw := NewEventSwitch() evsw := NewEventSwitch()
started, err := evsw.Start() started, err := evsw.Start()
if started == false || err != nil { if !started || err != nil {
t.Errorf("Failed to start EventSwitch, error: %v", err) t.Errorf("Failed to start EventSwitch, error: %v", err)
} }
messages := make(chan EventData) messages := make(chan EventData)
@ -34,7 +34,7 @@ func TestAddListenerForEventFireOnce(t *testing.T) {
func TestAddListenerForEventFireMany(t *testing.T) { func TestAddListenerForEventFireMany(t *testing.T) {
evsw := NewEventSwitch() evsw := NewEventSwitch()
started, err := evsw.Start() started, err := evsw.Start()
if started == false || err != nil { if !started || err != nil {
t.Errorf("Failed to start EventSwitch, error: %v", err) t.Errorf("Failed to start EventSwitch, error: %v", err)
} }
doneSum := make(chan uint64) doneSum := make(chan uint64)
@ -63,7 +63,7 @@ func TestAddListenerForEventFireMany(t *testing.T) {
func TestAddListenerForDifferentEvents(t *testing.T) { func TestAddListenerForDifferentEvents(t *testing.T) {
evsw := NewEventSwitch() evsw := NewEventSwitch()
started, err := evsw.Start() started, err := evsw.Start()
if started == false || err != nil { if !started || err != nil {
t.Errorf("Failed to start EventSwitch, error: %v", err) t.Errorf("Failed to start EventSwitch, error: %v", err)
} }
doneSum := make(chan uint64) doneSum := make(chan uint64)
@ -108,7 +108,7 @@ func TestAddListenerForDifferentEvents(t *testing.T) {
func TestAddDifferentListenerForDifferentEvents(t *testing.T) { func TestAddDifferentListenerForDifferentEvents(t *testing.T) {
evsw := NewEventSwitch() evsw := NewEventSwitch()
started, err := evsw.Start() started, err := evsw.Start()
if started == false || err != nil { if !started || err != nil {
t.Errorf("Failed to start EventSwitch, error: %v", err) t.Errorf("Failed to start EventSwitch, error: %v", err)
} }
doneSum1 := make(chan uint64) doneSum1 := make(chan uint64)
@ -168,7 +168,7 @@ func TestAddDifferentListenerForDifferentEvents(t *testing.T) {
func TestAddAndRemoveListener(t *testing.T) { func TestAddAndRemoveListener(t *testing.T) {
evsw := NewEventSwitch() evsw := NewEventSwitch()
started, err := evsw.Start() started, err := evsw.Start()
if started == false || err != nil { if !started || err != nil {
t.Errorf("Failed to start EventSwitch, error: %v", err) t.Errorf("Failed to start EventSwitch, error: %v", err)
} }
doneSum1 := make(chan uint64) doneSum1 := make(chan uint64)
@ -213,7 +213,7 @@ func TestAddAndRemoveListener(t *testing.T) {
func TestRemoveListener(t *testing.T) { func TestRemoveListener(t *testing.T) {
evsw := NewEventSwitch() evsw := NewEventSwitch()
started, err := evsw.Start() started, err := evsw.Start()
if started == false || err != nil { if !started || err != nil {
t.Errorf("Failed to start EventSwitch, error: %v", err) t.Errorf("Failed to start EventSwitch, error: %v", err)
} }
count := 10 count := 10
@ -266,7 +266,7 @@ func TestRemoveListener(t *testing.T) {
func TestRemoveListenersAsync(t *testing.T) { func TestRemoveListenersAsync(t *testing.T) {
evsw := NewEventSwitch() evsw := NewEventSwitch()
started, err := evsw.Start() started, err := evsw.Start()
if started == false || err != nil { if !started || err != nil {
t.Errorf("Failed to start EventSwitch, error: %v", err) t.Errorf("Failed to start EventSwitch, error: %v", err)
} }
doneSum1 := make(chan uint64) doneSum1 := make(chan uint64)
@ -377,5 +377,4 @@ func fireEvents(evsw EventSwitch, event string, doneChan chan uint64,
} }
doneChan <- sentSum doneChan <- sentSum
close(doneChan) close(doneChan)
return
} }

View File

@ -171,10 +171,7 @@ func statusesAreEqual(s1 *Status, s2 *Status) bool {
} }
func durationsAreEqual(d1 time.Duration, d2 time.Duration, maxDeviation time.Duration) bool { func durationsAreEqual(d1 time.Duration, d2 time.Duration, maxDeviation time.Duration) bool {
if d2-d1 <= maxDeviation { return d2-d1 <= maxDeviation
return true
}
return false
} }
func ratesAreEqual(r1 int64, r2 int64, maxDeviation int64) bool { func ratesAreEqual(r1 int64, r2 int64, maxDeviation int64) bool {

View File

@ -73,8 +73,7 @@ func TestVariousLevels(t *testing.T) {
func TestLevelContext(t *testing.T) { func TestLevelContext(t *testing.T) {
var buf bytes.Buffer var buf bytes.Buffer
var logger log.Logger logger := log.NewTMJSONLogger(&buf)
logger = log.NewTMJSONLogger(&buf)
logger = log.NewFilter(logger, log.AllowError()) logger = log.NewFilter(logger, log.AllowError())
logger = logger.With("context", "value") logger = logger.With("context", "value")
@ -93,8 +92,7 @@ func TestLevelContext(t *testing.T) {
func TestVariousAllowWith(t *testing.T) { func TestVariousAllowWith(t *testing.T) {
var buf bytes.Buffer var buf bytes.Buffer
var logger log.Logger logger := log.NewTMJSONLogger(&buf)
logger = log.NewTMJSONLogger(&buf)
logger1 := log.NewFilter(logger, log.AllowError(), log.AllowInfoWith("context", "value")) logger1 := log.NewFilter(logger, log.AllowError(), log.AllowInfoWith("context", "value"))
logger1.With("context", "value").Info("foo", "bar", "baz") logger1.With("context", "value").Info("foo", "bar", "baz")

View File

@ -49,9 +49,10 @@ func (l tmfmtLogger) Log(keyvals ...interface{}) error {
enc.Reset() enc.Reset()
defer tmfmtEncoderPool.Put(enc) defer tmfmtEncoderPool.Put(enc)
const unknown = "unknown"
lvl := "none" lvl := "none"
msg := "unknown" msg := unknown
module := "unknown" module := unknown
// indexes of keys to skip while encoding later // indexes of keys to skip while encoding later
excludeIndexes := make([]int, 0) excludeIndexes := make([]int, 0)
@ -90,7 +91,7 @@ func (l tmfmtLogger) Log(keyvals ...interface{}) error {
// Stopping ... - message // Stopping ... - message
enc.buf.WriteString(fmt.Sprintf("%c[%s] %-44s ", lvl[0]-32, time.Now().UTC().Format("01-02|15:04:05.000"), msg)) enc.buf.WriteString(fmt.Sprintf("%c[%s] %-44s ", lvl[0]-32, time.Now().UTC().Format("01-02|15:04:05.000"), msg))
if module != "unknown" { if module != unknown {
enc.buf.WriteString("module=" + module + " ") enc.buf.WriteString("module=" + module + " ")
} }

View File

@ -14,8 +14,7 @@ import (
func TestTracingLogger(t *testing.T) { func TestTracingLogger(t *testing.T) {
var buf bytes.Buffer var buf bytes.Buffer
var logger log.Logger logger := log.NewTMJSONLogger(&buf)
logger = log.NewTMJSONLogger(&buf)
logger1 := log.NewTracingLogger(logger) logger1 := log.NewTracingLogger(logger)
err1 := errors.New("Courage is grace under pressure.") err1 := errors.New("Courage is grace under pressure.")

View File

@ -22,6 +22,7 @@ For larger datasets, use IAVLTree.
*/ */
// nolint: goimports
package merkle package merkle
import ( import (
@ -31,8 +32,8 @@ import (
"golang.org/x/crypto/ripemd160" "golang.org/x/crypto/ripemd160"
. "github.com/tendermint/tmlibs/common"
"github.com/tendermint/go-wire" "github.com/tendermint/go-wire"
. "github.com/tendermint/tmlibs/common"
) )
func SimpleHashFromTwoHashes(left []byte, right []byte) []byte { func SimpleHashFromTwoHashes(left []byte, right []byte) []byte {

View File

@ -15,8 +15,8 @@ func Run(dir string, command string, args []string) (string, bool, error) {
<-proc.WaitCh <-proc.WaitCh
if proc.ExitState.Success() { if proc.ExitState.Success() {
return string(outFile.Bytes()), true, nil return outFile.String(), true, nil
} else { } else {
return string(outFile.Bytes()), false, nil return outFile.String(), false, nil
} }
} }

View File

@ -1,3 +1,6 @@
// nolint: megacheck
// nolint: varcheck
// nolint: deadcode
package query package query
import ( import (