
兽医分析仪检测魔术数字。
什么是魔术数字?
魔术数字是一个数字字面的数字,未定义为常数,但可能会更改,因此很难更新。在没有解释的情况下,直接在任何源代码中直接使用数字被认为是不良的编程实践。它使程序更难阅读,理解和维护。
该分析仪需要版本> = 1.12的Golang,因为这取决于GO/Analysis api。
go get -u github.com/tommy-muehle/go-mnd/v2/cmd/mnd
您可以作为GITHUB操作运行,如下所示:
name: Example workflow
on:
push:
branches:
- master
pull_request:
branches:
- master
jobs:
tests:
runs-on: ubuntu-latest
env:
GO111MODULE: on
steps:
- name: Checkout Source
uses: actions/checkout@v2
- name: Run go-mnd
uses: tommy-muehle/go-mnd@master
with:
args: ./...
您可以在GitLab CI管道中运行,如下所示:
stages:
- lint
go:lint:mnd:
stage: lint
needs: []
image: golang:latest
before_script:
- go get -u github.com/tommy-muehle/go-mnd/v2/cmd/mnd
- go mod tidy
- go mod vendor
script:
- go vet -vettool $(which mnd) ./...
要与自制型安装,请运行:
brew tap tommy-muehle/tap && brew install tommy-muehle/tap/mnd
要获取最新可用的Docker映像:
docker pull tommymuehle/go-mnd
在Windows上下载最新版本。
go vet -vettool $(which mnd) ./...
或直接
mnd ./...
或通过Docker
docker run --rm -v "$PWD":/app -w /app tommymuehle/go-mnd:latest ./...
-checks选项让您定义一个逗号分隔的检查列表。
-ignored-numbers选项,让您定义一个逗号分隔的数字列表,要忽略。
例如: -ignored-numbers=1000,10_000,3.14159264
-ignored-functions选项让您定义一个逗号分隔的函数名称regexp模式的列表,以排除。
例如: -ignored-functions=math.*,http.StatusText,make
-ignored-files选项,您可以定义一个逗号分隔的文件式REGEXP模式,以排除。
例如: -ignored-files=magic_.*.go,.*_numbers.go
默认情况下,此检测器分析参数,分配,情况,条件,操作和返回语句。
t := http.StatusText(200)
c := &http.Client{
Timeout: 5 * time.Second,
}
switch x {
case 3:
}
if x > 7 {
}
var x, y int
y = 10 * x
return 3
默认情况下,数字0和1以及测试文件被排除在外!
“时间”软件包中的函数“日期”。
t := time.Date(2017, time.September, 26, 12, 13, 14, 0, time.UTC)
可以通过选项标志定义其他自定义排除。
您可以使用以下方式构建二进制文件:
make
您可以使用以下方式运行所有单元测试
make test
并提供覆盖范围报告:
make test-coverage
您还可以使用命令:
make image


只需通过Twitter DM给我留言,或者如果您想为您或您的Gopher用户组贴上一些GO-MND贴纸,请给我留言即可。
麻省理工学院许可证(麻省理工学院)。请参阅许可证以获取更多信息。