Skip to content
/ dwrap Public

Linter: dwrap forces every public function to begin with an deferring call of a error wrapping function like derrors.Wrap.

License

Notifications You must be signed in to change notification settings

qawatake/dwrap

Repository files navigation

dwrap

Go Reference test codecov

Linter dwrap forces every public function to begin with a deferring call of an error wrapping function like derrors.Wrap. By using dwrap, you can prevent functions from returning without wrapping errors.

func Good() (err error) {
  defer derrors.Wrap(&err, "Good")
  doStuff()
  return nil
}

func Bad() error { // <-  should call defer derrors.Wrap fist.
  doOtherStuff()
  return nil
}

//lint:ignore dwrap this is because ...
func Ignored() error {
  doOtherStuff()
  return nil
}

How to use

Build your dwrap binary by writing main.go like below.

package main

import (
  "github.com/qawatake/dwrap"
  "golang.org/x/tools/go/analysis/unitchecker"
)

func main() {
  unitchecker.Main(
    dwrap.NewAnalyzer("your/derrors/pkg", "Wrap"),
  )
}

Then, run go vet with your dwrap binary.

go vet -vettool=/path/to/your/dwrap ./...

About

Linter: dwrap forces every public function to begin with an deferring call of a error wrapping function like derrors.Wrap.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published