我使用Makefile在GolangCI工具中启用了goImports,它能够发现未使用的导入,但不会自动删除它们.如何使我的GolangCI工具能够自动删除未使用的导入?

下面是我对Golangci皮棉使用的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

下面是我的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 imports automatically
    remove-unused: true

  # Configuration for the revive linter
  revive:
    # Add any custom rules you want to use
    rules:
      - id: 'import-shadowing'
        severity: warning
        match: '\bimport\s+\.\s+\S+'
        message: 'Importing packages using dot notation (.) is discouraged.'

issues:
  exclude-use-default: false
  max-issues-per-linter: 0
  max-same-issues: 0

推荐答案

我不确定golangci-lint是否可以就地修复.

删除未使用的导入的最简单方法是使用goimports工具.

$ go install golang.org/x/tools/cmd/goimports@latest

使用"-w"选项调用它可以直接就地修复导入,例如

 $ goimports -w sourcefile.go

Go相关问答推荐

golang父进程的副本无法进行https/tls调用并获得tls:未能验证证书""

Go Fiber和HTMX—HX—Trigger header被更改为HX—Trigger,这不是HTMX监听的内容

如何在v2 Go SDK中使用KeyConditionExpression查询AWS DynamoDb?

如果第一次匹配条件,如何跳过切片中的值

如何使用 AWS sdk 在 Go 中正确解组 PartiQL 查询的结果?

为什么 Go 对于长度为 100k 的切片使用的内存比长度为 100k 的数组要少?

用 fork 替换 Go 依赖:...用于两个不同的模块路径

启动套接字服务器会干扰 gRPC/http 客户端服务器通信 Golang

Golang prometheus:有没有办法衡量出站请求的指标?

如何从 Go 中的 `HijackedResponse` 中删除 Cursor Position ANSI 转义码?

获取不带类型参数的泛型 struct 的类型名称

GqlGen - 在字段解析器中访问查询输入参数

如何使用 Go 获取 X11 中的窗口列表

如何在Golang中的差异函数中杀死命令Exec

具有近似约束的函数值导致的实例化失败

vs 代码调试 go 测试不通过标志

使用 LoadLibraryA(path_to_dll) 加载 DLL 会将文件描述符 0、1 和 2 的继承句柄标志 (HANDLE_FLAG_INHERIT) 从 1 更改为 0

使用不安全的指针从 [] 字符串中获取值

获取单调时间,同 CLOCK_MONOTONIC

如何在程序退出时使用 golang 删除文件?