enumcasechecks everyswitchstatement handles all const values of the type
$ go get -u github.com/MakeNowJust/enumcase/cmd/enumcase$ go vet -vettool=$(which enumcase) pkgnameOr
$ enumcase pkgnameFor example you have this type and consts:
type FileMode int
const (
Read FileMode = iota
Write
Append
)Then, enumcase reports a warning for such a switch because the case to Append is missing.
switch mode {
case Read:
// ...
case Write:
// ...
}$ go vet -vettool=$(which enumcase) .
/.../main.go:10:9: missing case(s) to FileMode value(s): Appendenumcase reports many false-positives because this tool checks all switch statement whose tag type has const value.
It is hard to distinguish whether the type is enum-like or not.
I don't recommend to use enumcase on CI or everyday code check.
However, I recommend to use enumcase when a new const value is added.
It may help you.