
Un analyseur vétérinaire pour détecter les nombres magiques.
Qu'est-ce qu'un numéro magique?
Un nombre magique est un littéral numérique qui n'est pas défini comme une constante, mais qui peut changer, et peut donc être difficile à mettre à jour. Il est considéré comme une mauvaise pratique de programmation d'utiliser des numéros directement dans n'importe quel code source sans explication. Il rend les programmes plus difficiles à lire, à comprendre et à maintenir.
Cet analyseur nécessite Golang en version> = 1.12 car il dépend de l'API GO / Analyse .
go get -u github.com/tommy-muehle/go-mnd/v2/cmd/mnd
Vous pouvez exécuter Go-Mnd en tant qu'action GitHub comme suit:
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: ./...
Vous pouvez exécuter Go-Mnd dans un pipeline GitLab CI comme suit:
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) ./...
Pour installer avec Homebrew, exécutez:
brew tap tommy-muehle/tap && brew install tommy-muehle/tap/mnd
Pour obtenir la dernière image Docker disponible:
docker pull tommymuehle/go-mnd
Sur Windows, téléchargez la dernière version.
go vet -vettool $(which mnd) ./...
ou directement
mnd ./...
ou via Docker
docker run --rm -v "$PWD":/app -w /app tommymuehle/go-mnd:latest ./...
L'option -checks vous permet de définir une liste de chèques séparés par des virgules.
L'option -ignored-numbers vous permet de définir une liste de nombres séparés par des virgules à ignorer.
Par exemple: -ignored-numbers=1000,10_000,3.14159264
L'option -ignored-functions vous permet de définir une liste séparée par des virgules du nom de fonction regexp des modèles à exclure.
Par exemple: -ignored-functions=math.*,http.StatusText,make
L'option -ignored-files vous permet de définir une liste séparée par des virgules des modèles Regexp de nom de fichier à exclure.
Par exemple: -ignored-files=magic_.*.go,.*_numbers.go
Par défaut, ce détecteur analyse les arguments, les attributions, les cas, les conditions, les opérations et les instructions de retour.
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
Par défaut, les numéros 0 et 1 ainsi que les fichiers de test sont exclus!
La fonction "Date" dans le package "Heure".
t := time.Date(2017, time.September, 26, 12, 13, 14, 0, time.UTC)
Des exclusions personnalisées supplémentaires peuvent être définies via un indicateur d'option.
Vous pouvez construire le binaire avec:
make
Vous pouvez exécuter tous les tests unitaires en utilisant:
make test
Et avec le rapport de couverture:
make test-coverage
Vous pouvez également construire localement l'image docker en utilisant la commande:
make image


Enregistrez-moi simplement un message via Twitter DM ou par e-mail si vous voulez des autocollants GO-MND pour vous ou votre groupe d'utilisateur Gopher.
La licence MIT (MIT). Veuillez consulter la licence pour plus d'informations.