如何使用GolangCI删除未使用的导入

t1rydlwq  于 2023-03-10  发布在  Go
关注(0)|答案(2)|浏览(188)

bounty将在4天后过期。回答此问题可获得+50的声誉奖励。Mabel Oza正在寻找来自声誉良好来源的答案

我使用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

下面是我的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
eimct9ow

eimct9ow1#

我不确定golangci-lint是否可以进行就地修复。
删除未使用的导入的最简单方法是使用goimports工具。

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

使用“-w”选项调用它可以直接在原处修复导入,例如:

$ goimports -w sourcefile.go
r8uurelv

r8uurelv2#

我很高兴使用goimports-reviser。我发现它上级goimports,因为它不仅删除未使用的导入时,调用-rm-unused标志,而且还重新分组和排序导入。默认情况下,它安排标准,外部和本地导入在单独的组,并支持自定义公司前缀,如果你想为您的组织一个单独的组。

相关问题