
魔法の数字を検出するための獣医アナライザー。
マジックナンバーとは何ですか?
魔法の数字は、定数として定義されていないが、変化する可能性があるため、更新するのが難しい場合がある数値リテラルです。説明なしに、ソースコードで直接数値を使用するのは、プログラミングの悪い慣行と考えられています。これにより、プログラムは読み、理解し、維持するのが難しくなります。
このアナライザーには、Go/Analysis APIに依存するため、バージョン> = 1.12のGolangが必要です。
go get -u github.com/tommy-muehle/go-mnd/v2/cmd/mnd
次のように、go-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パイプライン内で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) ./...
homebrewでインストールするには、実行してください。
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


あなたまたはあなたのGopherユーザーグループのためにいくつかのGO-MNDステッカーが必要な場合は、Twitter DMまたはメールでメッセージをドロップしてください。
MITライセンス(MIT)。詳細については、ライセンスをご覧ください。