Unpport es una herramienta de análisis estático para encontrar alias de importación innecesarios.
go get -u github.com/alexkohler/unimport
Similar a otras herramientas anaylsis estáticas GO (como Golint, VET), la Unpport se puede invocar con uno o más nombres de archivo, directorios o paquetes nombrados por su ruta de importación. Unpport también apoya al ... comodín.
unimport files/directories/packages
Actualmente, no se admiten ninguna bandera. Se puede agregar una bandera -w en el futuro para eliminar automáticamente los alias siempre que sea posible (similar al indicador -W de GoFMT).
Como se señaló en los comentarios de la revisión del código de GO:
Evite cambiar el nombre de las importaciones, excepto para evitar una colisión de nombres; Los buenos nombres de los paquetes no deben requerir el nombre de nombre. En caso de colisión, prefiera cambiar el nombre de la importación más local o específica del proyecto.
Esta herramienta verificará si los alias de importación son realmente necesarios (al garantizar que haya una colisión de nombres que existiría sin el alias de importación). Esta herramienta ignorará las rutas de importación que contienen guiones y puntos, ya que generalmente son alias útiles mientras importan una revisión específica. Por ejemplo, en Gometalinter, hay algunas importaciones como kingpin "gopkg.in/alecthomas/kingpin.v3-unstable" . Este es un alias de importación razonable y no será marcado.
Ejecutando unimports en la fuente de Go:
$ 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
A continuación se presentan algunos de los alias de importación posiblemente innecesarios que encontró:
// 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"
)¡Solicitud de solicitud de bienvenida!