Unimport ist ein statisches Analyse -Tool, um unnötige Import -Aliase zu finden.
go get -u github.com/alexkohler/unimport
Ähnlich wie bei anderen Go -statischen Anaylsis -Tools (wie Golint, Go -Tierarzt) kann Unimport mit einem oder mehreren Dateinamen, Verzeichnissen oder Paketen aufgerufen werden, die von seinem Importpfad benannt sind. Unimport unterstützt auch die ... Wildcard.
unimport files/directories/packages
Derzeit wird keine Flagge unterstützt. Ein -w -Flag kann in Zukunft hinzugefügt werden, um Aliase nach Möglichkeit automatisch zu entfernen (ähnlich wie bei GOFMT -W -Flag).
Wie in Go's Code Review Kommentare erwähnt:
Vermeiden Sie es, Importe umzubenennen, außer um einen Namenskollision zu vermeiden. Gute Paketnamen sollten keine Umbenennung erfordern. Im Falle der Kollision bevorzugen es, den lokalsten oder projektspezifischsten Import umzubenennen.
Dieses Tool prüft, ob wirklich importierende Aliase benötigt werden (indem sichergestellt wird, dass ein Namenskollision ohne den Import -Alias vorliegt). Dieses Tool ignoriert Importpfade, die Striche und Punkte enthalten, da diese im Import einer bestimmten Revision im Allgemeinen nützliche Aliase sind. In Gometalinter gibt es beispielsweise einige Importe wie kingpin "gopkg.in/alecthomas/kingpin.v3-unstable" . Dies ist ein vernünftiger Import -Alias und wird nicht markiert.
unimports in der Go -Quelle ausführen:
$ 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
Im Folgenden finden Sie einige der wohl nicht benötigten Import -Aliase, die es gefunden hat:
// 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"
)Anfragen willkommen!