govulncheck ab sofort fest im Release-Prozess. Baseline-Scan fand 6 aktiv aufgerufene Vulns (SSH-Backup-Pfad internal/services/backup/remote): - 5× golang.org/x/crypto (SSH DoS/Deadlock/Panic: GO-2026-5013/5017/5018/5019/5020) → x/crypto v0.51.0 => v0.52.0 - 1× golang.org/x/net (GO-2026-5026) → v0.53.0 => v0.55.0 Re-Scan danach: "No vulnerabilities found." Go-Quality-Baseline (Makefile + .golangci.yml, portabel): - release-check läuft autom. vor jedem deb/publish: vet → golangci-lint (Rollout: non-blocking) → govulncheck (HARTER Gate) → build → test -race. - make vulncheck / make test-race als eigene Targets. - .golangci.yml: staticcheck/govet/errcheck/ineffassign/unused/misspell + gosec/bodyclose/rowserrcheck/sqlclosecheck/noctx/contextcheck. - go test -race: aktuell 0 Races (Gate sicher). Doku in CLAUDE.md. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
43 lines
1.6 KiB
YAML
43 lines
1.6 KiB
YAML
# 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.
|