2 votes

lang:go & vs-code : comment obtenir un avertissement de nom dupliqué

Mon erreur :

var x int
if ... {
    x := 5 // <-- accidantly written ":=" instead of "="
    fmt.Println( x )
}
... // use x then 

Cela compile bien. Y a-t-il un moyen d'obtenir un avertissement de vscode ou d'un autre outil ? BTW : Parfois, un avertissement sur des MyName y myName pourrait également être utile.

0voto

zangw Points 401

Ce dont vous avez besoin, c'est d'un outil qui puisse détecter variable shadowing . Vous pouvez essayer go vet comme suit

L'analyseur 'shadow' peut être construit et exécuté en utilisant ces commandes :

  go install golang.org/x/tools/go/analysis/passes/shadow/cmd/shadow
  go vet -vettool=$(which shadow)

Une autre option est la configuration go vet en golangci-lint

Activer check-shadowing sur .golangci.yml

linters-settings:
  govet:
    check-shadowing: true

Fichier t.go

func main() {
    a := 1
    if true {
        a := 2
        fmt.Println(a)
    }
    fmt.Println(a)
}

Ensuite, exécutez golangci-lint run ./t.go et a obtenu

t.go:8:3: shadow: declaration of "a" shadows declaration at line 6 (govet)
                a := 2
                ^

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X