下面介绍一下 golangci.yaml 的各个字段的含义:
  1. run
      • go: 指定 Go 版本。
      • timeout: 设置分析一个包的最长时间,避免长时间卡住。
      • tests: 指定是否同时执行单元测试。
      • modules-download-mode: 设置模块下载模式。
      • issues-exit-code: 指定检查到问题时返回的退出码。
      • build-tags: 指定编译标签用于特定的构建。
      • skip-dirs: 跳过包含指定目录的代码块。
      • skip-files: 跳过指定文件。
  1. linters
    1. linters 用于指定需要启用的检查器(linter)。golangci-lint 内置了一些常见的检查器,也支持用户自定义检查器。
      • disable: 禁用指定的检查器。
      • presets: 启用预定义的检查器列表。
      • custom: 自定义检查器。
      disablepresets 选项中,可以指定需要禁用或启用的检查器。例如,disable 中禁用了 gofumptrowserrcheck 检查器,而 presets 中启用了 bugserrorformatimportperformanceunused 这些检查器。
  1. linters-settings
    1. linters-settings 用于指定检查器的具体配置项,可以针对每个检查器进行单独的配置。例如,linters-settings 中针对 gosec 检查器进行了端口扫描的 IP 和端口配置。
  1. issues
    1. issues 中可以设置所有问题通用的配置项,例如是否忽略由测试文件引起的问题、是否忽略注释、是否忽略第三方包和编译器错误等。
  1. exclude-rules
    1. exclude-rules 可以排除某些规则,避免特定规则带来的误判。例如,在此配置文件中设置排除了 SA1017SA1018 规则。
  1. warnings-as-errors
    1. warnings-as-errors 指定是否将所有警告视为错误,如果启用,则在遇到警告时,golangci-lint 将返回非零退出码。
  1. build
    1. build 用于设置构建相关的选项,包括可执行程序的名称、平台和标签等。
  1. cache
    1. cache 用于设置缓存相关的选项,包括使用的缓存类型和不同缓存级别的清理策略等。
  1. debug
    1. debug 用于设置调试相关选项,例如打印版本信息、使用 GDB 调试等。
以上是 golangci.yaml 的字段含义和作用。根据具体项目和需求,可以在此文件中进行配置调整,以达到更好的代码分析和检查效果。