
獸醫分析儀檢測魔術數字。
什麼是魔術數字?
魔術數字是一個數字字面的數字,未定義為常數,但可能會更改,因此很難更新。在沒有解釋的情況下,直接在任何源代碼中直接使用數字被認為是不良的編程實踐。它使程序更難閱讀,理解和維護。
該分析儀需要版本> = 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貼紙,請給我留言即可。
麻省理工學院許可證(麻省理工學院)。請參閱許可證以獲取更多信息。