
마법 번호를 감지하는 수의사 분석기.
마법 번호는 무엇입니까?
마법 번호는 상수로 정의되지는 않지만 변경 될 수 있으므로 업데이트하기가 어려울 수있는 숫자 문자입니다. 설명없이 모든 소스 코드에서 숫자를 직접 사용하는 것은 잘못된 프로그래밍 관행으로 간주됩니다. 프로그램을 읽고 이해하고 유지하기가 더 어려워집니다.
이 분석기는 GO/Analysis API에 따라 다르기 때문에 버전> = 1.12의 Golang이 필요합니다.
go get -u github.com/tommy-muehle/go-mnd/v2/cmd/mnd
다음과 같이 GitHub 액션으로 Go-Mnd를 실행할 수 있습니다.
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 파이프 라인 내에서 Go-Mnd를 실행할 수 있습니다.
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
명령을 사용하여 Docker 이미지를 로컬로 빌드 할 수도 있습니다.
make image


Twitter DM을 통해 메시지를 보내거나 귀하 또는 Gopher 사용자 그룹을 위해 MND 스티커를 원한다면 이메일을 보내주십시오.
MIT 라이센스 (MIT). 자세한 내용은 라이센스를 참조하십시오.