unimport
1.0.0
Immport是一个GO静态分析工具,可以找到不必要的导入别名。
go get -u github.com/alexkohler/unimport
与其他GO静态Anaylsis工具(例如Golint,Go Vet)类似,可以使用一个或多个以其导入路径命名的文件名,目录或软件包来调用Import。毫无疑问也支持...通配符。
unimport files/directories/packages
目前,不支持标志。将来可能会添加一个-w标志,以在可能的情况下自动删除别名(类似于GOFMT的-W标志)。
如GO的代码评论评论中所述:
避免重命名进口,除了避免姓名碰撞;好的包装名称不需要重命名。如果发生碰撞,则希望重命名最本地或特定于项目的导入。
该工具将检查是否真正需要任何导入别名(确保在没有导入别名的情况下存在名称碰撞)。该工具将忽略包含破折号和点的导入路径,因为在导入特定的修订时,这些工具通常是有用的别名。例如,在Gometalinter中,有一些导入,例如kingpin "gopkg.in/alecthomas/kingpin.v3-unstable" 。这是一个合理的导入别名,不会被标记。
在GO来源上运行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"
)欢迎拉请求!