alingse / sundrylint

three thousand real world bug linter
MIT License
5 stars 0 forks source link

TODO for lint some bugs #2

Open alingse opened 1 year ago

alingse commented 1 year ago

1. iter over zero

nums := make([]int, 0)
for _, num := range nums {

}

2. unused result from pure function

id := 1
if id > 0 {
   strconv.FormatInt(id, 10)
}

the result from pure function FormatInt is unused

3. append all data while range it

for _, n := range ns {
    if n > 0 {
        rs = append(rs, ns...)
   }
}

4. if-else-if vs switch

if n == 1 {
} else if n == 2 {
} else if n == 3 {
} else {
}

5. useless continue

for _, n := range ns {
   ...
   if n > 0 {
      ...
      continue
   }
}

6. nilnesserr

err := fn()
if err != nil {
    return err
}
err2 := fn2()
if err2 != nil {
    return err
}

7. strconv.AppendInt

var b []byte
var c int64 = 10
strconv.AppendInt(b, c, 10)

8. regexp.MustCompile()

const HTMLReg = `<\w+>`

func Do() {
     regexp.MustCompile(HTMLReg)
 }

9. Integer Devide

float64(1 - countA/countB)

10. interface typeassert

v, ok := v.(io.Reader)
if !ok {
     v.Read()
}

11. use another err

if rollbackErr != nil {
    log.Errorf(ctx, "Rollback failed, err=%v", err)
}