UNIMPORT est un outil d'analyse statique Go pour trouver des alias d'importation inutiles.
go get -u github.com/alexkohler/unimport
Semblable à d'autres outils GO static anaylsis (tels que Golint, GO Vet), UNIMPORT peut être invoqué avec un ou plusieurs noms de fichiers, répertoires ou packages nommés par son chemin d'importation. Unimport soutient également le ... Wildcard.
unimport files/directories/packages
Actuellement, aucun drapeau n'est pris en charge. Un drapeau -w peut être ajouté à l'avenir pour supprimer automatiquement les alias dans la mesure du possible (similaire au drapeau -W de GOFMT).
Comme indiqué dans la révision du code de GO, commentaires:
Éviter de renommer les importations sauf pour éviter une collision de nom; Les bons noms de package ne devraient pas nécessiter de renommer. En cas de collision, préférez renommer l'importance la plus locale ou spécifique au projet.
Cet outil vérifiera si des alias d'importation sont vraiment nécessaires (en s'assurant qu'il existe une collision de nom qui existerait sans l'alias d'importation). Cet outil ignorera les chemins d'importation contenant des tirets et des points, car ce sont généralement des alias utiles lors de l'importation d'une révision spécifique. Par exemple, dans Gometaliner, il y a certaines importations comme kingpin "gopkg.in/alecthomas/kingpin.v3-unstable" . Il s'agit d'un alias d'importation raisonnable et ne sera pas signalé.
Exécuter unimports sur la source:
$ unimport $GOROOT/src/...
cmd/go/pkg.go:18 unnecessary import alias pathpkg
go/build/build.go:19 unnecessary import alias pathpkg
go/internal/gcimporter/gcimporter.go:23 unnecessary import alias exact
os/pipe_test.go:14 unnecessary import alias osexec
os/os_windows_test.go:10 unnecessary import alias osexec
Voici quelques-uns des alias d'importation sans doute inutiles qu'il a trouvés:
// go/internal/gcimporter/gcimporter.go
import (
"bufio"
"errors"
"fmt"
"go/build"
"go/token"
"io"
"io/ioutil"
"os"
"path/filepath"
"sort"
"strconv"
"strings"
"text/scanner"
exact "go/constant"
"go/types"
)
// os/pipe_test.go.go
import (
"fmt"
"internal/testenv"
"os"
osexec "os/exec"
"os/signal"
"syscall"
"testing"
)Tirez les demandes de bienvenue!