unimport
1.0.0
Unimportは、不必要なインポートエイリアスを見つけるためのGO静的分析ツールです。
go get -u github.com/alexkohler/unimport
他のGO Static Anaylsisツール(Golint、Go Vetなど)と同様に、Unimportは、その輸入パスで名前が付けられた1つ以上のファイル名、ディレクトリ、またはパッケージで呼び出すことができます。 Unimportは...ワイルドカードもサポートしています。
unimport files/directories/packages
現在、フラグはサポートされていません。 A -wフラグは、可能な限りエイリアスを自動的に削除するために将来追加される場合があります(GOFMTの-Wフラグに似ています)。
Goのコードレビューコメントに記載されているように:
名前の衝突を避けることを除き、輸入の名前を変更しないでください。優れたパッケージ名は名前を変更する必要はありません。衝突の場合、最もローカルまたはプロジェクト固有のインポートの名前を変更することを好みます。
このツールは、インポートエイリアスが本当に必要かどうかを確認します(インポートエイリアスなしで存在する名前の衝突があることを確認することにより)。このツールは、特定の改訂をインポートする際に一般的に有用なエイリアスであるため、ダッシュとドットを含むインポートパスを無視します。たとえば、Gometalinterでは、 kingpin "gopkg.in/alecthomas/kingpin.v3-unstable"のような輸入品がいくつかあります。これは合理的なインポートエイリアスであり、フラグが立てられません。
外出先でunimports実行するソース:
$ 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
以下は、それが見つけた間違いなく不要なインポートエイリアスの一部です。
// 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"
)リクエストをプル歓迎!