配置GolangCI后,如何实现自动移除未使用的导入?
解决GolangCI自动移除未使用导入的配置问题
1. 修正.golangci.yaml的配置结构
你当前的配置把goimports的参数直接放在了linters节点下,这不符合golangci-lint的配置规范——具体linter的配置需要放在linters-settings节点中。修改后的完整配置如下:
run: timeout: 5m modules-download-mode: readonly linters: enable: - errcheck - goimports - revive - govet - staticcheck linters-settings: # goimports 配置 goimports: remove-unused: true # revive 配置 revive: rules: - id: 'import-shadowing' severity: warning match: '\bimport\s+\.\s+\S+' message: '不建议使用点符号(.)导入包。' issues: exclude-use-default: false max-issues-per-linter: 0 max-same-issues: 0
2. 修复Docker运行时的文件权限问题
Docker容器默认以root用户执行命令,修改文件后会导致宿主机器上的文件权限变更为root,同时可能因权限限制无法正常写入文件。在docker run命令中添加--user $(id -u):$(id -g)参数,让容器以宿主用户身份运行:
##@ Linting lint: @echo "lint via golangci-lint in " $(OUTPUT_DIR)/src docker run --rm -v $(PWD):/local \ -u $(id -u):$(id -g) \ -w /local golangci/golangci-lint:latest \ golangci-lint run --fix --config .golangci.yaml $(OUTPUT_DIR)/src/*.go
3. (可选)覆盖所有需要处理的文件
如果src目录下存在子目录,*.go只会匹配当前目录的Go文件,无法递归处理子目录内容。可以将路径改为$(OUTPUT_DIR)/src/...来递归处理所有子目录下的Go文件:
golangci-lint run --fix --config .golangci.yaml $(OUTPUT_DIR)/src/...
完成以上修改后,重新执行make lint命令,golangci-lint即可自动移除未使用的导入。
内容的提问来源于stack exchange,提问作者Mabel Oza
相关产品推荐
相关产品推荐

