Skip to content

alingse/nilnesserr

Folders and files

NameName
Last commit message
Last commit date

Latest commit

d298576 · Apr 4, 2025

History

49 Commits
Apr 4, 2025
Dec 20, 2024
Dec 19, 2024
Apr 4, 2025
Dec 15, 2024
Apr 4, 2025
Dec 15, 2024
Apr 4, 2025
Dec 18, 2024
Dec 18, 2024
Apr 4, 2025
Dec 20, 2024
Apr 4, 2025
Jan 6, 2025

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 // want `return a nil value error after check error`
}

case 2

err := do()
if err != nil {
    return err
}
_, err2 := do2()
if err2 != nil {
    return errors.Wrap(err) // want `call function with a nil value error after check error`
}

case 3

err := do()
if err != nil {
    return err
}
_, err2 := do2()
if err2 != nil {
    return fmt.Errorf("call do2 failed: %w",err) // want `call variadic function with a nil value error after check error`
}

Some Real Bugs

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

Install

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

TODO

case 3

err := do()
if err != nil {
    return err
}
_, ok := do2()
if !ok {
    return 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.