# Go-Quality-Baseline für EdgeGuard (portabel für weitere Go-Projekte). # Rollout: erst NON-BLOCKING laufen lassen (Bestand aufräumen), dann in der # CI/Makefile auf harten Gate stellen. govulncheck ist bereits ein harter # Release-Gate (siehe Makefile: vulncheck / release-check). version: "2" run: timeout: 5m tests: true linters: enable: # ── Basis ── - staticcheck # umfangreiche statische Analyse - govet # go vet - errcheck # unbehandelte Fehler - ineffassign # wirkungslose Zuweisungen - unused # toter Code - misspell # Tippfehler in Kommentaren/Strings # ── Security (Pflicht bei Kunden-/Finanzdaten) ── - gosec # SQL-Injection, hardcoded Secrets, schwache Krypto # ── Ressourcen-/Leak-Schutz ── - bodyclose # nicht geschlossene HTTP-Response-Bodies - rowserrcheck # fehlendes rows.Err() (database/sql-Muster) - sqlclosecheck # fehlendes rows/stmt.Close() # ── Context-Hygiene ── - noctx # HTTP-Requests ohne context - contextcheck # nicht-vererbte Contexts settings: misspell: locale: US gosec: excludes: # G115 (int-Konvertierungs-Overflow) erzeugt in Go 1.26 viele # false positives — bei Bedarf gezielt wieder aktivieren. - G115 # HINWEIS: rowserrcheck/sqlclosecheck zielen auf database/sql. EdgeGuard nutzt # pgx/pgxpool — dort greifen sie nur teilweise. Das pgx-Muster (manuelles # rows.Next()/Scan() + defer rows.Close() + rows.Err()) bitte weiter per Review # absichern; siehe internal/services/*/*.go.