woodpecker/vendor/github.com/nishanths/exhaustive/README.md

69 lines
1.4 KiB
Markdown
Raw Normal View History

## exhaustive [![Godoc][2]][1]
Check exhaustiveness of enum switch statements in Go source code.
```
go install github.com/nishanths/exhaustive/cmd/exhaustive@latest
```
For docs on the flags, the definition of enum, and the definition of
exhaustiveness, see [godocs.io][4].
For the changelog, see [CHANGELOG][changelog] in the wiki.
The package provides an `Analyzer` that follows the guidelines in the
[`go/analysis`][3] package; this should make it possible to integrate
exhaustive with your own analysis driver program.
## Example
Given the enum
```go
package token
type Token int
const (
Add Token = iota
Subtract
Multiply
Quotient
Remainder
)
```
and the switch statement
```go
package calc
import "token"
func f(t token.Token) {
switch t {
case token.Add:
case token.Subtract:
case token.Multiply:
default:
}
}
```
running exhaustive will print
```
calc.go:6:2: missing cases in switch of type token.Token: Quotient, Remainder
```
## Contributing
Issues and pull requests are welcome. Before making a substantial
change, please discuss it in an issue.
[1]: https://godocs.io/github.com/nishanths/exhaustive
[2]: https://godocs.io/github.com/nishanths/exhaustive?status.svg
[3]: https://pkg.go.dev/golang.org/x/tools/go/analysis
[4]: https://godocs.io/github.com/nishanths/exhaustive
[changelog]: https://github.com/nishanths/exhaustive/wiki/CHANGELOG