Skip to content

alingse/nilnesserr

Repository files navigation

nilnesserr

nilnesserr = nilness + nilerr

nilnesserr is a linter for report return nil error in go. It combines the features of nilness and nilerr, providing a concise way to detect return an unrelated/nil-values error.

Case

case 1

err := do()
if err != nil {
    return err
}
err2 := do2()
if err2 != nil {
    return err // which should return err2 after check `err2 != nil`, but return a nil value error
}

Some Real Bugs

we use https://github.com/alingse/go-linter-runner to run linter on GitHub Actions for public golang repos

Install

go install github.com/alingse/nilnesserr/cmd/nilnesserr@latest

TODO

case 2

err := do()
if err != nil {
    return err
}
_, ok := do2()
if !ok {
    return err
}

case 3

err := do()
if err != nil {
    return err
}
_, ok := do2()
if !ok {
    return errors.Wrap(err)
}

maybe this is also a bug, should return a non-nil value error after the if

License

This project is licensed under the MIT License. See the LICENSE file for details.

This project incorporates source code from two different libraries:

  1. nilness licensed under the BSD license.
  2. nilerr licensed under the MIT license.