Skip to content
enumcase checks every switch statement handles all const values of the type
Go
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
cmd/enumcase
testdata/src/a
.gitignore
LICENSE
README.md
enumcase.go
enumcase_test.go
go.mod
go.sum

README.md

enumcase

enumcase checks every switch statement handles all const values of the type

Install

$ go get -u github.com/MakeNowJust/enumcase/cmd/enumcase

Usage

$ go vet -vettool=$(which enumcase) pkgname

Or

$ enumcase pkgname

Example

For 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): Append

Notice

enumcase 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.

You can’t perform that action at this time.