v0.7.1 · aggiornata · GitHub

Contribuire

Leggi prima Architettura: mostra dove si trovano parser, guard, enrich e blocklist nel flusso dei dati. Per le firme dei pacchetti, consulta API / Pacchetti.

Configurazione

git clone https://github.com/lenny-ts/caddy-analyzer.git && cd caddy-analyzer
go version # 1.25+

Test e lint — comandi esatti (come in CI)

# full suite (what CI runs)
go vet ./...
go test -race -v ./...
go test -race -coverprofile=coverage.out ./... && go tool cover -func=coverage.out | tail
# coverage gate is 55% (CI enforces <55 → error)

# fmt
gofmt -l .
# should be empty; fix with:
gofmt -w .
# lint (golangci-lint v2, 17 linters, see .golangci.yml)
golangci-lint run

# security / vuln
govulncheck ./...
gosec -exclude G204,G302,G304,G401,G501,G505 ./...

# gitleaks (secrets)
gitleaks detect --source .

Testa solo il modulo modificato

Riscontro piu rapido: esegui il pacchetto, non l'intera suite:

go test -race ./pkg/analysis -run TestDetector -count=1
go test -race ./pkg/guard -run TestGuard -count=1
go test -race ./pkg/enrich -count=1
go test -race ./pkg/blocklist -count=1
go test -race ./cmd -run TestResolveSources -count=1

Oppure un singolo file (quando ne modifichi uno):

go test -race ./pkg/parser -run TestParse -count=1 -v

Dove aggiungere elementi

CosaDoveNota
Nuova categoria di rilevamentopkg/analysis/detect.goAggiungi pattern + ID MITRE, aggiungi il test in detect_test.go, assicurati che TestPatternUniqueness passi
Feed blocklistpkg/blocklist/blocklist.go + testImplementa fetch/parse di Source, rispetta cacheTTL 7d
Backend firewallpkg/guard/firewall/Implementa l'interfaccia Backend, copri Detect()
Flag CLIcmd/root.go + cmd/tuning.goPersistente oppure solo root, gestisci applyTuning
Formato di outputpkg/output/*Table/JSON/CSV/HTML — mantieni defang e csvSafe

Convenzione dei commit

Riga singola, imperativo, 35–62 caratteri. Nessun corpo, nessun prefisso type:, nessun prefisso di versione.

Add GeoIP filter for ASN
Fix guard state persistence across restarts
Update blocklist cache TTL handling

Non valido: feat: add ..., v0.6.1: fix o corpo su piu righe. Consulta AGENTS.md. Il rilascio avviene tramite tag v* → GoReleaser + Syft + cosign (gestisci tu merge + tag + push).

Checklist PR

  • go vet ./... && go test -race ./... && golangci-lint run completati con successo
  • Test per il nuovo codice, documentazione aggiornata con node tools/build-docs.js && bash tools/minify.sh se hai modificato docs/src/
  • Messaggio di commit di 35–62 caratteri, imperativo
Vedi anche
Architettura — flusso dei dati e mappa dei pacchetti. API / Pacchetti — importazione e uso per pacchetto.