
Un analizador veterinario para detectar números mágicos.
¿Qué es un número mágico?
Un número mágico es un literal numérico que no se define como una constante, pero que puede cambiar y, por lo tanto, puede ser difícil de actualizar. Se considera una mala práctica de programación para usar números directamente en cualquier código fuente sin una explicación. Hace que los programas sean más difíciles de leer, comprender y mantener.
Este analizador requiere Golang en la versión> = 1.12 porque depende de la API GO/Analysis .
go get -u github.com/tommy-muehle/go-mnd/v2/cmd/mnd
Puedes ejecutar Go-Mnd como una acción de GitHub de la siguiente manera:
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: ./...
Puede ejecutar Go-Mnd dentro de una tubería Gitlab CI de la siguiente manera:
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) ./...
Para instalar con HomeBrew, ejecute:
brew tap tommy-muehle/tap && brew install tommy-muehle/tap/mnd
Para obtener la última imagen de Docker disponible:
docker pull tommymuehle/go-mnd
En Windows descargue la última versión.
go vet -vettool $(which mnd) ./...
o directamente
mnd ./...
o a través de Docker
docker run --rm -v "$PWD":/app -w /app tommymuehle/go-mnd:latest ./...
La opción -checks te permite definir una lista de cheques separadas por coma.
La opción -ignored-numbers le permite definir una lista de números separada por coma para ignorar.
Por ejemplo: -ignored-numbers=1000,10_000,3.14159264
La opción -ignored-functions le permite definir una lista separada de coma de los patrones de nombre de la función regexp para excluir.
Por ejemplo: -ignored-functions=math.*,http.StatusText,make
La opción -ignored-files le permite definir una lista separada por comas de los patrones de nombre de archivo regexp para excluir.
Por ejemplo: -ignored-files=magic_.*.go,.*_numbers.go
Por defecto, este detector analiza argumentos, asignaciones, casos, condiciones, operaciones y declaraciones de retorno.
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
¡Por defecto, los números 0 y 1, así como los archivos de prueba están excluidos!
La función "fecha" en el paquete "hora".
t := time.Date(2017, time.September, 26, 12, 13, 14, 0, time.UTC)
Se pueden definir exclusiones personalizadas adicionales a través del indicador de opción.
Puedes construir el binario con:
make
Puede ejecutar todas las pruebas unitarias usando:
make test
Y con informe de cobertura:
make test-coverage
También puede construir localmente la imagen Docker utilizando el comando:
make image


Simplemente envíeme un mensaje a través de Twitter DM o envíe un correo electrónico si desea algunas pegatinas de Go-Mnd para usted o su grupo de usuario de Gopher.
La licencia MIT (MIT). Consulte la licencia para obtener más información.