O Unimport é uma ferramenta de análise estática para encontrar aliases de importação desnecessários.
go get -u github.com/alexkohler/unimport
Semelhante a outras ferramentas estáticas de Anaylsis estáticas (como Golint, Go Vet), o Unimport pode ser invocado com um ou mais nomes de arquivos, diretórios ou pacotes nomeados por seu caminho de importação. O Unimport também suporta o ... curinga.
unimport files/directories/packages
Atualmente, nenhuma bandeira é suportada. Um sinalizador -w pode ser adicionado no futuro para remover automaticamente os aliases sempre que possível (semelhante ao sinalizador -w do GoFMT).
Conforme observado nos comentários da revisão de código de Go do Go:
Evite renomear as importações, exceto para evitar uma colisão de nome; Bons nomes de pacotes não devem exigir renomeação. No caso de colisão, prefira renomear a importação mais local ou específica do projeto.
Esta ferramenta verificará se são realmente necessários aliases de importação (garantindo que haja uma colisão de nome que exista sem o alias de importação). Essa ferramenta ignorará os caminhos de importação contendo traços e pontos, pois geralmente são aliases úteis enquanto importam uma revisão específica. Por exemplo, em Gometalinter, existem algumas importações como kingpin "gopkg.in/alecthomas/kingpin.v3-unstable" . Este é um alias de importação razoável e não será sinalizado.
Executando unimports On the Go 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
Abaixo estão alguns dos pseudônimos de importação sem dúvida que encontraram:
// 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"
)Pull Pedidos bem -vindos!