mirror of
https://github.com/woodpecker-ci/woodpecker.git
synced 2025-02-28 09:06:43 +00:00
* update github.com/docker/cli * update github.com/docker/distribution * update github.com/docker/docker * update github.com/gin-gonic/gin * update github.com/golang-jwt/jwt/v4 * update github.com/golangci/golangci-lint * update github.com/gorilla/securecookie * update github.com/mattn/go-sqlite3 * update github.com/moby/moby * update github.com/prometheus/client_golang * update github.com/xanzy/go-gitlab
68 lines
1.4 KiB
Markdown
68 lines
1.4 KiB
Markdown
## 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
|