dwrap
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 ./...