ARO-RP/vendor/github.com/tommy-muehle/go-mnd
Jim Minter 44e1c425d7
vendor
2020-11-19 08:09:58 -06:00
..
checks vendor 2020-11-19 08:09:58 -06:00
config vendor 2020-11-19 08:09:58 -06:00
.editorconfig vendor 2020-11-19 08:09:58 -06:00
.gitignore vendor 2020-11-19 08:09:58 -06:00
.goreleaser.yml vendor 2020-11-19 08:09:58 -06:00
.travis.yml vendor 2020-11-19 08:09:58 -06:00
LICENSE vendor 2020-11-19 08:09:58 -06:00
README.md vendor 2020-11-19 08:09:58 -06:00
analyzer.go vendor 2020-11-19 08:09:58 -06:00
go.mod vendor 2020-11-19 08:09:58 -06:00
go.sum vendor 2020-11-19 08:09:58 -06:00

README.md

go-mnd - Magic number detector for Golang

A vet analyzer to detect magic numbers.

What is a magic number?
A magic number is a numeric literal that is not defined as a constant, but which may change, and therefore can be hard to update. It's considered a bad programming practice to use numbers directly in any source code without an explanation. It makes programs harder to read, understand, and maintain.

Project status

Build Status Go Report Card

Install

This analyzer requires Golang in version >= 1.12 because it's depends on the go/analysis API.

go get github.com/tommy-muehle/go-mnd/cmd/mnd

To install with Homebrew, run:

brew tap tommy-muehle/tap && brew install tommy-muehle/tap/mnd

On Windows download the latest release.

Usage

asciicast

go vet -vettool $(which mnd) ./...

or directly

mnd ./...

The -checks option let's you define a comma separated list of checks.

The -ignored-numbers option let's you define a comma separated list of numbers to ignore.

The -excludes option let's you define a comma separated list of regexp patterns to exclude.

Checks

By default this detector analyses arguments, assigns, cases, conditions, operations and return statements.

  • argument
t := http.StatusText(200)
  • assign
c := &http.Client{
    Timeout: 5 * time.Second,
}
  • case
switch x {
    case 3:
}
  • condition
if x > 7 {
}
  • operation
var x, y int
y = 10 * x
  • return
return 3

Excludes

By default the numbers 0 and 1 as well as test files are excluded!

Further known excludes

The function "Date" in the "Time" package.

t := time.Date(2017, time.September, 26, 12, 13, 14, 0, time.UTC)

Additional custom excludes can be defined via option flag.

License

The MIT License (MIT). Please see LICENSE for more information.