Skip to content

Tiny linter which detects potential bugs with time.Duration for Go

License

Notifications You must be signed in to change notification settings

hypnoglow/durcheck

Repository files navigation

durcheck

Build Status License MIT

durcheck is a very simple linter which detects potential bugs with time.Duration in a Go package.

Purpose

Consider the following code:

func doInTime(done chan struct{}) error {
	select {
	case <-time.After(60):
		return errors.New("timeout")
	case <-done:
		return nil
	}
}

There is obviously a problem with time.After(60), where untyped int is actually converted to 60 nanoseconds. But a programmer can miss it, or a Golang newcomer from languages like PHP where sleep function has signature int sleep ( int $seconds ) can make such mistake.

Running the linter against the code above will produce an error:

$ durcheck .
main.go:14:9: implicit time.Duration means nanoseconds in "time.After(60)" 

Install

go get -u github.com/hypnoglow/durcheck

gometalinter integration

Option A: pass these arguments to gometalinter command:

gometalinter --linter=durcheck:durcheck:PATH:LINE:COL:MESSAGE --enable=durcheck ./...

Option B: add this configuration to your .gometalinter.json file:

{
  "Enable": [
    "durcheck"
  ],
  "Linters": {
    "durcheck": {
      "Command": "durcheck",
      "Pattern": "PATH:LINE:COL:MESSAGE"
    }
  }
}

LICENSE

MIT

About

Tiny linter which detects potential bugs with time.Duration for Go

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages