From 6b7055e48daa60878b1012687564e5008cdd0cdf Mon Sep 17 00:00:00 2001 From: Alex Shevchuk Date: Thu, 21 Aug 2025 00:29:42 +0300 Subject: [PATCH] 59 --- .golangci-lint.yaml | 274 ++++++++++++++++++++++++++++++++++++++------ 1 file changed, 237 insertions(+), 37 deletions(-) diff --git a/.golangci-lint.yaml b/.golangci-lint.yaml index 66a7453..7423e9c 100644 --- a/.golangci-lint.yaml +++ b/.golangci-lint.yaml @@ -1,46 +1,246 @@ -.DS_Store +# 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 -Thumbs.db -desktop.ini + # Минимально поддерживаемая версия 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' -.vscode/ -.idea/ -*.sublime-workspace -*.sublime-project -go.sum -*.log -*.tmp -*.swp +# 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 -/bin/ -/pkg/ -/coverage.out -*.test -*.exe -*.dll -*.so -*.dylib -vendor/ +linters-settings: -*.o -*.obj -*.a -*.lib -*.out -*.class -*.pch + #complexity: + funlen: + # Проверяет длину функций -docker-compose.yaml -.env + lines: 100 # Максимальное кол-во строк функции + statements: 60 # Максимальное кол-во утверждений -dist/ -tmp/ -.vscod/ -code-quality-repot.json + gocognit: + # Проверяет цикломатическую сложность + # Конфигурация https://golangci-lint.run/usage/linters/#gocyclo + # Репозиторий https://github.com/uudashr/gocognit -molva + min-complexity: 20 # Максимально допустимая сложность -bin/ -code-quality-report.json -.build/config/local.yaml \ No newline at end of file + + #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