114 votes

Go fmt sur un arbre source entier

J'ai un projet actuellement organisé de cette façon :

~/code/go
         /bin
         /pkg
         /src
             /proj/main.go
                  /some\_package/package.go
                  /some\_other\_package/some\_other\_package.go

Maintenant, si je veux utiliser le go fmt sur l'ensemble de mon projet, il semble que le seul moyen soit de le faire séparément pour chaque répertoire de l'arborescence des sources de mon projet :

go fmt proj
go fmt proj/package
go fmt proj/some_other_package

Existe-t-il un moyen de dire à la commande fmt de s'exécuter sur l'ensemble de l'arbre source ?

144voto

tux21b Points 17336

Vous pouvez utiliser trois points ( ... ) comme joker. Ainsi, par exemple, la commande suivante formatera tous les paquets github.com :

go fmt github.com/...

Ce caractère de remplacement fonctionne également avec d'autres commandes go telles que go list , go get et ainsi de suite. Il n'est pas nécessaire de se souvenir d'une commande find aussi laide.

94voto

Song Gao Points 515

Si vous utilisez gofmt au lieu de go fmt c'est récursif. Par exemple, la commande suivante

gofmt -s -w .

(remarquez le petit point à la fin) formate, simplifie et enregistre récursivement le résultat dans chaque fichier du répertoire courant. J'ai un alias shell gf défini comme suit gofmt -s -w . et je le trouve assez pratique.

Pruebe gofmt -l . ( liste les fichiers dont le formatage diffère de celui de gofmt ) d'abord si vous voulez :-)

55voto

Vladimir Points 1

Aussi, vous pouvez essayer d'exécuter la commande :

go fmt ./...

à partir du répertoire de votre projet.

6voto

icktoofay Points 60218
find proj -type f -iregex '.*\.go' -exec go fmt '{}' +

Explication

  • find proj : tout trouver dans ce répertoire...
    • -type f ...c'est un fichier
    • -iregex '.*\.go' : ...et correspond à l'expression régulière sans tenir compte de la casse. .*\.go
  • ...et d'exécuter go fmt suivi d'autant de fichiers appariés que le système d'exploitation peut gérer en passant à un exécutable en une seule fois.

5voto

sgauri Points 382

Si vous utilisez GoLand IDE, faites un clic droit sur le projet et vous trouverez Go Tools . enter image description here

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