version: "2" run: timeout: 5m allow-parallel-runners: false linters: default: none enable: - asasalint - asciicheck - bidichk - bodyclose - canonicalheader - containedctx - copyloopvar - decorder - dupword - durationcheck - embeddedstructfieldcheck - errcheck - errname - errorlint - exhaustive - exptostd - fatcontext - funcorder - ginkgolinter - gocheckcompilerdirectives - gochecksumtype - goconst - gocritic - godoclint - godot - godox - goheader - gomoddirectives - goprintffuncname - gosec - gosmopolitan - govet - grouper - iface - importas - inamedparam - interfacebloat - intrange - iotamixing - makezero - mirror - misspell - nakedret - nilerr - nilnesserr - nilnil - nolintlint - nosprintfhostport - paralleltest - perfsprint - prealloc - predeclared - protogetter - reassign - recvcheck - rowserrcheck - spancheck - sqlclosecheck - staticcheck - tagalign - testableexamples - testifylint - thelper - tparallel - unconvert - unqueryvet - usestdlibvars - usetesting - wastedassign - whitespace - zerologlint disable: - arangolint # arangoDB нет на проекте. - contextcheck # Заставляет везде писать контекст. - cyclop # ! Включить и починить. Много проблемных мест. - depguard # У нас нет списка разрешёных пакетов. Для этого есть SAST. - dogsled # Пропускать возвращаемые переменные -- это нормально. - dupl # Иногда дублирование уместнее обобщения. Можно сверятся с этим так, для справки. - err113 # Динамические ошибки -- это нормально. - errchkjson - exhaustruct # ! Включить и починить. - forbidigo # fmt.Print у нас только в нужных местах. Дополнительные паттерны не требуются. - forcetypeassert # ! Включить и починить. - funlen # ! Включить и починить. Слишком много срабатываний. - gochecknoglobals # Глобальные переменные -- это нормально. - gochecknoinits # Init -- это нормально. - gocognit # ! Включить и починить. По хорошему сложные функции требуется рефачить. - gocyclo # ! Включить и починить. - ineffassign # Польза неясна. Единственный раз встречается в false-positive - ireturn # ! Включить и починить. Нужно настроить нормально. - lll # Невозможно ему удовлетворять. Стоит разделить линтеры на два файла: первый для CI, которому 100% надо удовлетворять, а второй для IDE, чтобы мягко намекала. - loggercheck # Не актуален. У нас zerolog. - maintidx # ! Включить и починить. У нас есть гигантские сложные функции, но пока нет времени с ними разобраться. - mnd # ! Включить и починить. У нас слишком много чисел, которые очень лень отдельно прописывать. Однако линтер полезен, чтобы проверять статус-коды и подобное. - musttag # ! Включить и починить. - nestif # ! Включить и починить. Требуется рефактор. - noctx # ! Включить и починить. Нет причин не использовать контекст. - noinlineerr # Не вижу ничего плохого, но идея интересная. Мб и стоит её придерживаться. - nonamedreturns # Не вижу ничего плохого в именовании выходных значений. Всё равно про них мало кто знает. - promlinter # ! Проверить адекватность и нужность с нашим прометеем. - revive # ! Включить и починить. Линтер светит простые ошибки, но их очень много. - sloglint # slog нет на проекте. - tagliatelle # ! Включить и починить. Активировать и расставить игноры на старые места где АПИ уже не получится поменять. - testpackage - unparam # Можно сверяться для справки. - unused - varnamelen - wrapcheck settings: exhaustive: default-signifies-exhaustive: true funlen: lines: 100 statements: 50 godoclint: default: none enable: - pkg-doc - start-with-name - deprecated - no-unused-link godot: # Comments to be checked: `declarations`, `toplevel`, `noinline` or `all`. # Default: declarations scope: declarations # ! Выставить all и пофиксить все замечания. capital: true gosec: excludes: - G115 - G404 gosmopolitan: allow-time-local: true interfacebloat: max: 20 misspell: locale: US mnd: ignored-files: - pkg/rusimpulse/.+\.go # Протокол табло имеет много специфичных операций. - pkg/moxa/e1200/.+\.go # Работа с modbus требуется постоянно указывать адреса и количество чтения. paralleltest: ignore-missing: true ignore-missing-subtests: true staticcheck: checks: - all - -ST1000 - -ST1003 - -ST1016 - -ST1020 - -ST1021 - -ST1022 tagalign: align: false order: - yaml - json - validate tagliatelle: case: rules: json: camel yaml: snake exclusions: generated: lax presets: - comments - common-false-positives - legacy - std-error-handling paths: - third_party$ - builtin$ - examples$ issues: max-issues-per-linter: 0 max-same-issues: 0 fix: false formatters: enable: - gofmt - gofumpt - goimports settings: gofmt: simplify: true rewrite-rules: - pattern: "interface{}" replacement: "any" - pattern: "a[b:len(a)]" replacement: "a[b:]" gofumpt: module-path: gitlab.sovcombank.group/hippogo/sup extra-rules: false exclusions: generated: lax paths: - third_party$ - builtin$ - examples$