# Options for analysis running. run: # The default concurrency value is the number of available CPU. concurrency: 2 # Timeout for analysis, e.g. 30s, 5m. # Default: 1m timeout: 5m # Exit code when at least one issue was found. # Default: 1 issues-exit-code: 1 # Include test files or not. # Default: true tests: false # List of build tags, all linters use it. # Default: []. build-tags: [ ] # Which files to skip: they will be analyzed, but issues from them won't be reported. # Default value is empty list, # but there is no need to include all autogenerated files, # we confidently recognize autogenerated files. # If it's not please let us know. # "/" will be replaced by current OS file path separator to properly work on Windows. skip-files: [ ] # сгенерированные файлы пропускаются автоматически # If set we pass it to "go list -mod={option}". From "go help modules": # If invoked with -mod=readonly, the go command is disallowed from the implicit # automatic updating of go.mod described above. Instead, it fails when any changes # to go.mod are needed. This setting is most useful to check that go.mod does # not need updates, such as in a continuous integration and testing system. # If invoked with -mod=vendor, the go command assumes that the vendor # directory holds the correct copies of dependencies and ignores # the dependency descriptions in go.mod. # # Allowed values: readonly|vendor|mod # By default, it isn't set. modules-download-mode: readonly # Allow multiple parallel golangci-lint instances running. # If false (default) - golangci-lint acquires file lock on start. allow-parallel-runners: true # Минимально поддерживаемая версия go. # Mainly related to generics support in go1.18. # Default: use Go version from the go.mod file, fallback on the env var `GOVERSION`, fallback on 1.17 go: '1.22' # output configuration options output: # Format: colored-line-number|line-number|json|tab|checkstyle|code-climate|junit-xml|github-actions # # Multiple can be specified by separating them by comma, output can be provided # for each of them by separating format name and path by colon symbol. # Output path can be either `stdout`, `stderr` or path to the file to write to. # Example: "checkstyle:report.json,colored-line-number" # # Default: colored-line-number formats: "colored-line-number:stdout,code-climate:code-quality-report.json" # Print lines of code with issue. # Default: true print-issued-lines: false # Print linter name in the end of issue text. # Default: true print-linter-name: true # Make issues output unique by line. # Default: true uniq-by-line: true # Add a prefix to the output file references. # Default is no prefix. path-prefix: "" # Sort results by: filepath, line and column. sort-results: true linters-settings: #complexity: funlen: # Проверяет длину функций lines: 100 # Максимальное кол-во строк функции statements: 60 # Максимальное кол-во утверждений gocognit: # Проверяет цикломатическую сложность # Конфигурация https://golangci-lint.run/usage/linters/#gocyclo # Репозиторий https://github.com/uudashr/gocognit min-complexity: 20 # Максимально допустимая сложность #bug # nilerr - нет конфигурации gosec: # Проверяет отсутствие проблем безопасности # Конфигурация https://golangci-lint.run/usage/linters/#gosec # Репозиторий https://github.com/securego/gosec exclude-generated: false #code_style: # goconst: # # ищет переменные, которые можно вынести в константы. # # Конфигурация https://golangci-lint.run/usage/linters/#goconst # # Репозиторий https://github.com/jgautheron/goconst # # min-len: 2 # min-occurrences: 2 # ignore-tests: true # match-constant: true tagliatelle: # Проверяет теги на использование нужного стиля # Конфигурация https://golangci-lint.run/usage/linters/#tagliatelle # Репозитория https://github.com/ldez/tagliatelle case: rules: json: snake # требует snake_case для тегов json varnamelen: # Проверяет отсутствие слишком коротких имен переменных. # Конфигурация https://golangci-lint.run/usage/linters/#varnamelen # Репозиторий https://github.com/blizzy78/varnamelen max-distance: 8 # минимальное кол-во строк скоупа при которой происходит проверка min-name-length: 3 # минимальная длина названия переменной check-receiver: false # не проверяет method receiver check-return: true # проверяет название возвращаемого из фукнции значения check-type-param: true # проверяет параметры типа ignore-type-assert-ok: true # Пропускает _,ok переменную при val.(type) ignore-map-index-ok: true # Пропускает _,ok переменную при map[intex] ignore-chan-recv-ok: true # Пропускает _,ok переменную при <- channel ignore-names: # Пропускает следующие имена - c # для передачи (c *Core) в параметрах - ch - q - id - ip - ok - mq - tx - dn - app - cnt - err - job - key - log - now - raw - row - tcp - trs - ws - db - fs - v # для работы с viper - h - r # для работы с роутером - ms - md # для работы с metadata - wg # стандартное имя переменной waitGroup ignore-decls: # игнорирует следующие определения - t testing.T - T any - w http.ResponseWriter - r *http.Request - i int - v interface{} - wg sync.WaitGroup - ctx context.Context - cmd *cobra.Command - img image.Image - mux *runtime.ServeMux # wastedassign - нет конфигурации wsl: # Проверяет наличие/отсутствие пустых строк между блоками. # Подробная конфигурация https://github.com/bombsimon/wsl/blob/master/doc/configuration.md strict-append: true # требует чтобы блоки с append были разделены по группам allow-assign-and-call: true # разрешает не разделять присваивание и вызов метода allow-assign-and-anything: false # требует чтобы после присваивания был пробел (исключение вызов метода) allow-multiline-assign: true # разрешает не разделять группы присваиваний allow-separated-leading-comment: true # позволяет иметь отдельные комментарии в начале блока force-case-trailing-whitespace: 2 # требует чтобы после блока case, если в нем >= 2 строк, был пробел allow-cuddle-declarations: false # требует чтобы блоки определения были сгруппированы скобками allow-trailing-comment: true # разрешает комментарии в конце блока force-err-cuddling: true # разрешает отделять проверку ошибок от вызова функции/метода #other: nolintlint: # Проверяет использование директивы //nolint. # Конфигурация https://golangci-lint.run/usage/linters/#nolintlint # Репозиторий https://github.com/golangci/golangci-lint/tree/master/pkg/golinters/nolintlint allow-unused: false # запрещает иметь неиспользуемые директивы allow-leading-space: false # запрещает ставить пробел перед директивой (требование go code style) require-specific: false # требует чтобы был указан линтер который выключается require-explanation: true # требует объяснений использования диррективы allow-no-explanation: [ ] # список исключений # unused - нет конфигурации #issues: # new: false # проверяет только новые изменения new-from-rev: HEAD # проверяет только код после этого комита - не работает ## fix: true # выключен т.к. отсутствуют линтеры с автофиксом linters: enable: #complexity: - gocognit # проверяет когнитивную сложность кода. - funlen # проверяет длину функций #bug: - nilerr # проверяет возвращаемые ошибки https://github.com/gostaticanalysis/nilerr - gosec # проверяет отсутствие проблем безопасности #code_style: # - goconst # ищет переменные, которые можно вынести в константы. - tagliatelle # проверяет теги на использование нужного стиля - varnamelen # проверяет отсутствие слишком коротких имен переменных - wastedassign # проверяет отсутствие неиспользуемых присваиваний https://github.com/sanposhiho/wastedassign - wsl # проверяет наличие/отсутствие пустых строк между блоками. #other: - nolintlint # проверяет использование директивы //nolint - unused #проверяет неиспользуемые объекты https://github.com/dominikh/go-tools/tree/master/unused # temp disabled #- prealloc fast: false issues: exclude-rules: - path: 'internal\/manager\/infrastructure\/database\/(.+)\.go' linters: - funlen