我使用 makefile 在 GolangCI 工具中启用了 goimports,它能够发现未使用的导入,但不会自动删除它们。如何让我的 golangCI 工具自动删除未使用的导入?
下面是我的 golangci linting 的 makefile 命令,我使用的是标签--fix:
##@ Linting
lint:
@echo "lint via golangci-lint in " $(OUTPUT_DIR)/src
docker run --rm -v $(PWD):/local \
-w /local golangci/golangci-lint:latest \
golangci-lint run --fix --config .golangci.yaml $(OUTPUT_DIR)/src/*.go
Run Code Online (Sandbox Code Playgroud)
下面是我的 golangci.yaml 文件,我设置remove-unused为 true :
run:
timeout: 5m
modules-download-mode: readonly
linters:
enable:
- errcheck
- goimports
- revive
- govet
- staticcheck
# Configuration for the goimports linter
goimports:
# Set to true to remove unused …Run Code Online (Sandbox Code Playgroud) 我在网络https://github.com/deckarep/golang-set中发现了一个非常有用的 Go 库,它试图将 Python 集移植到 Go。
感谢 Visual Studio Code,我最终通过导入库import "github.com/deckarep/golang-set"并在代码中调用函数来使其正常工作:
mySet := mapset.NewSet()
Run Code Online (Sandbox Code Playgroud)
VS Code 自动识别别名并替换 import 指令:
import mapset "github.com/deckarep/golang-set"
Run Code Online (Sandbox Code Playgroud)
然而,作为一个发现这些别名令人困惑的人,我试图将其删除,但这样做后,VSCode 将其从 import 语句和我的代码中删除了。VS Code 然后告诉我:
未声明的名称:NewSet编译器(UndeclaredName)
NewSet(...)的包名称也是package mapset。所以我想我可以简单地删除它。但这不起作用。
我还尝试与其他第 3 方包类似地工作,并通过存储库的名称调用函数:
mySet := golang-set.NewSet()
Run Code Online (Sandbox Code Playgroud)
这也会导致错误。由于连字符的原因,这里不可能删除别名,或者我正在监督其他事情?