version: "2" run: go: "1.25" modules-download-mode: readonly tests: false allow-parallel-runners: true linters: default: none enable: - asasalint - asciicheck - bodyclose - containedctx - contextcheck - decorder - durationcheck - errcheck - errchkjson - errorlint - exhaustive - exptostd - ginkgolinter - gocheckcompilerdirectives - gocritic - godoclint - godot - godox - goprintffuncname - gosec - gosmopolitan - govet - grouper - importas - ineffassign - intrange - ireturn - makezero - mirror - misspell - modernize - nakedret - nilerr - nilnil - nlreturn - noctx - nolintlint - nonamedreturns - perfsprint - predeclared - promlinter - reassign - revive - rowserrcheck - staticcheck - unconvert - unused - usestdlibvars - wastedassign - wsl_v5 settings: decorder: dec-order: - type - const - var - func gocritic: disable-all: false enable-all: true disabled-checks: - singleCaseSwitch - octalLiteral - regexpSimplify - paramTypeCombine - whyNoLint - hugeParam godoclint: default: all ignore-unexported: false ignore-exported: false include-unexported: true disable: - max-len godot: scope: all exclude: # Exclude todo and fixme comments. - "^fixme:" - "^todo:" period: true capital: false godox: keywords: - FIXME gosec: # go-fucking-sic excludes: # Боже, как же вы затрахали своей крипто-ебучкой, наркоманы хреновы! - G405 # Detect the usage of DES or RC4 - G406 # Detect the usage of MD4 or RIPEMD160 # Оно не используется для повышения безопасности или каких-то таких секъюрных вещей, оно используется для выборки # произвольного элемента из массива, так что ИДИ НАХУЙ с этой проверкой и не еби мозги липовой безопасностью. - G404 # Insecure random number source (rand) - G501 # Import blocklist: crypto/md5 - G502 # Import blocklist: crypto/des - G503 # Import blocklist: crypto/rc4 - G504 # Import blocklist: net/http/cgi - G505 # Import blocklist: crypto/sha1 - G506 # Import blocklist: golang.org/x/crypto/md4 - G507 # Import blocklist: golang.org/x/crypto/ripemd160 config: global: audit: true # Ваша сраная паранойя при создании файлов и каталогов мешает нормальной работе сервисов. Группы придуманы для # удобства, группе удобно давать право чтения. Поэтому идите нахуй со своими ограничениями на чтение для # группы, "безопасные" клоуны. G301: "0755" G306: "0644" govet: disable-all: false enable-all: true disable: - shadow - fieldalignment grouper: # Require the use of a single global 'const' declaration only. # Default: false const-require-single-const: true # Require the use of grouped global 'const' declarations. # Default: false const-require-grouping: true # Require the use of a single 'import' declaration only. # Default: false import-require-single-import: true # Require the use of grouped 'import' declarations. # Default: false import-require-grouping: true # Require the use of a single global 'type' declaration only. # Default: false type-require-single-type: true # Require the use of grouped global 'type' declarations. # Default: false type-require-grouping: true # Require the use of a single global 'var' declaration only. # Default: false var-require-single-var: true # Require the use of grouped global 'var' declarations. # Default: false var-require-grouping: true misspell: # Correct spellings using locale preferences for US or UK. # Setting locale to US will correct the British spelling of 'colour' to 'color'. # Default is to use a neutral variety of English. locale: US # Typos to ignore. # Should be in lower case. # Default: [] ignore-rules: - someword # Extra word corrections. # `typo` and `correction` should only contain letters. # The words are case-insensitive. # Default: [] extra-words: - typo: "iff" correction: "if" - typo: "cancelation" correction: "cancellation" # Mode of the analysis: # - default: checks all the file content. # - restricted: checks only comments. # Default: "" mode: restricted nonamedreturns: # Report named error if it is assigned inside defer. # Default: false report-error-in-defer: true perfsprint: integer-format: true int-conversion: true error-format: true err-error: false errorf: true string-format: true sprintf1: true strconcat: true bool-format: true hex-format: true concat-loop: true loop-other-ops: false revive: enable-all-rules: false staticcheck: # https://staticcheck.dev/docs/configuration/options/#dot_import_whitelist # Default: ["github.com/mmcloughlin/avo/build", "github.com/mmcloughlin/avo/operand", "github.com/mmcloughlin/avo/reg"] dot-import-whitelist: - fmt # https://staticcheck.dev/docs/configuration/options/#initialisms # Default: ["ACL", "API", "ASCII", "CPU", "CSS", "DNS", "EOF", "GUID", "HTML", "HTTP", "HTTPS", "ID", "IP", "JSON", "QPS", "RAM", "RPC", "SLA", "SMTP", "SQL", "SSH", "TCP", "TLS", "TTL", "UDP", "UI", "GID", "UID", "UUID", "URI", "URL", "UTF8", "VM", "XML", "XMPP", "XSRF", "XSS", "SIP", "RTP", "AMQP", "DB", "TS"] initialisms: [ "ACL", "API", "ASCII", "CPU", "CSS", "DNS", "EOF", "GUID", "HTML", "HTTP", "HTTPS", "ID", "IP", "JSON", "QPS", "RAM", "RPC", "SLA", "SMTP", "SQL", "SSH", "TCP", "TLS", "TTL", "UDP", "UI", "GID", "UID", "UUID", "URI", "URL", "UTF8", "VM", "XML", "XMPP", "XSRF", "XSS", "SIP", "RTP", "AMQP", "DB", "TS", ] # https://staticcheck.dev/docs/configuration/options/#http_status_code_whitelist # Default: ["200", "400", "404", "500"] http-status-code-whitelist: ["200", "400", "404", "500"] # SAxxxx checks in https://staticcheck.dev/docs/configuration/options/#checks # Example (to disable some checks): [ "all", "-SA1000", "-SA1001"] # Run `GL_DEBUG=staticcheck golangci-lint run --enable=staticcheck` to see all available checks and enabled by config checks. # Default: ["all", "-ST1000", "-ST1003", "-ST1016", "-ST1020", "-ST1021", "-ST1022"] checks: # Enable all checks, then disable specific ones - all # Disable ST1005 - allows capitalized error messages - -ST1005 unconvert: # Remove conversions that force intermediate rounding. # Default: false fast-math: true # Be more conservative (experimental). # Default: false safe: true usestdlibvars: # Suggest the use of http.MethodXX. # Default: true http-method: false # Suggest the use of http.StatusXX. # Default: true http-status-code: false # Suggest the use of time.Month in time.Date. # Default: false time-date-month: true # Suggest the use of time.Weekday.String(). # Default: true time-weekday: true # Suggest the use of time.Month.String(). # Default: false time-month: true # Suggest the use of time.Layout. # Default: false time-layout: true # Suggest the use of crypto.Hash.String(). # Default: false crypto-hash: true # Suggest the use of rpc.DefaultXXPath. # Default: false default-rpc-path: true # Suggest the use of sql.LevelXX.String(). # Default: false sql-isolation-level: true # Suggest the use of tls.SignatureScheme.String(). # Default: false tls-signature-scheme: true # Suggest the use of constant.Kind.String(). # Default: false constant-kind: true wsl_v5: allow-first-in-block: true allow-whole-block: true branch-max-lines: 2 case-max-lines: 2 default: all disable: - if - err exclusions: generated: lax presets: - comments - common-false-positives - legacy - std-error-handling rules: # Allow capitalized error messages - linters: - staticcheck text: "ST1005" paths: - third_party$ - builtin$ - examples$ formatters: enable: - gofmt - goimports exclusions: generated: lax paths: - third_party$ - builtin$ - examples$