version: "2" linters: default: none enable: - depguard - errcheck - gosec - govet - ineffassign - staticcheck - unused settings: depguard: rules: # Enforce: service must not depend on repository. service-no-repository: list-mode: original files: - "**/internal/service/**" - "!**/internal/service/ops_aggregation_service.go" - "!**/internal/service/ops_alert_evaluator_service.go" - "!**/internal/service/ops_cleanup_service.go" - "!**/internal/service/ops_metrics_collector.go" - "!**/internal/service/ops_scheduled_report_service.go" - "!**/internal/service/wire.go" deny: - pkg: github.com/Wei-Shaw/sub2api/internal/repository desc: "service must not import repository" - pkg: gorm.io/gorm desc: "service must not import gorm" - pkg: github.com/redis/go-redis/v9 desc: "service must not import redis" handler-no-repository: list-mode: original files: - "**/internal/handler/**" deny: - pkg: github.com/Wei-Shaw/sub2api/internal/repository desc: "handler must not import repository" - pkg: gorm.io/gorm desc: "handler must not import gorm" - pkg: github.com/redis/go-redis/v9 desc: "handler must not import redis" gosec: excludes: - G101 - G103 - G104 - G109 - G115 - G201 - G202 - G301 - G302 - G304 - G306 - G404 severity: high confidence: high errcheck: # Report about not checking of errors in type assertions: `a := b.(MyStruct)`. # Such cases aren't reported by default. # Default: false check-type-assertions: true # report about assignment of errors to blank identifier: `num, _ := strconv.Atoi(numStr)`. # Such cases aren't reported by default. # Default: false check-blank: false # To disable the errcheck built-in exclude list. # See `-excludeonly` option in https://github.com/kisielk/errcheck#excluding-functions for details. # Default: false disable-default-exclusions: true # List of functions to exclude from checking, where each entry is a single function to exclude. # See https://github.com/kisielk/errcheck#excluding-functions for details. exclude-functions: - io/ioutil.ReadFile - io.Copy(*bytes.Buffer) - io.Copy(os.Stdout) - fmt.Println - fmt.Print - fmt.Printf - fmt.Fprint - fmt.Fprintf - fmt.Fprintln # Display function signature instead of selector. # Default: false verbose: true ineffassign: # Check escaping variables of type error, may cause false positives. # Default: false check-escaping-errors: true staticcheck: # https://staticcheck.dev/docs/configuration/options/#dot_import_whitelist dot-import-whitelist: - fmt # https://staticcheck.dev/docs/configuration/options/#initialisms 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 http-status-code-whitelist: [ "200", "400", "404", "500" ] # "all" enables every SA/ST/S/QF check; only list the ones to disable. checks: - all - -ST1000 # Package comment format - -ST1003 # Poorly chosen identifier (ApiKey vs APIKey) - -ST1020 # Comment on exported method format - -ST1021 # Comment on exported type format - -ST1022 # Comment on exported variable format unused: # Default: true field-writes-are-uses: true # Default: false post-statements-are-reads: true # Default: true exported-fields-are-used: true # Default: true parameters-are-used: true # Default: true local-variables-are-used: false # Default: true — must be true, ent generates 130K+ lines of code generated-is-used: true formatters: enable: - gofmt settings: gofmt: # Simplify code: gofmt with `-s` option. # Default: true simplify: false # Apply the rewrite rules to the source before reformatting. # https://pkg.go.dev/cmd/gofmt # Default: [] rewrite-rules: - pattern: 'interface{}' replacement: 'any' - pattern: 'a[b:len(a)]' replacement: 'a[b:]'