Vai al contenuto

🤖 Spiega con IA

Configurazione di QA automatizzata e barriere di sicurezza

Panoramica

Ogni pezzo di codice generato da 4Geeks AI Factory passa attraverso un Quality Gate automatizzato prima che uno sviluppatore umano lo riveda. Questo gate esegue scansioni istantanee delle vulnerabilità e test unitari guidati dall’intelligenza artificiale, garantendo che la velocità non comprometta mai la sicurezza.

In questo tutorial imparerai:

  • Come funziona il Portale della Qualità
  • Quali scansioni di sicurezza vengono eseguite
  • Come i test unitari vengono generati automaticamente
  • Come configurare le regole di QA per il tuo progetto
  • Come interpretare i risultati del Quality Gate

La pipeline del Quality Gate

AI-Generated Code
┌─────────────────────────────────┐
│         QUALITY GATE            │
│                                 │
│  1. Static Code Analysis        │
│  2. Vulnerability Scanning      │
│  3. AI-Generated Unit Tests     │
│  4. Code Style Validation       │
│  5. Performance Analysis        │
│  6. Dependency Audit            │
│                                 │
│  ┌─────────┐    ┌─────────┐    │
│  │  PASS   │───►│  FAIL   │    │
│  └─────────┘    └─────────┘    │
└────────┬───────────────┬───────┘
         │               │
         ▼               ▼
  Human Review     Auto-Fix & Retry
  (Senior Arch)    (up to 2 attempts)

Passaggio 1: comprendere le scansioni

1. Analisi del codice statico

  • Cosa controlla: qualità del codice, complessità, manutenibilità
  • Strumenti utilizzati: ESLint, Pylint, SonarQube (a seconda della lingua)
  • Regole applicate: standard di codifica del tuo progetto + migliori pratiche del settore
  • Risultato: punteggio di qualità (A-F) con suggerimenti di miglioramento specifici

2. Scansione delle vulnerabilità

  • Cosa controlla: OWASP Top 10, vulnerabilità CWE, rischi di injection
  • Strumenti utilizzati: Snyk, Semgrep, CodeQL
  • Copertura: SQL injection, XSS, CSRF, difetti di autenticazione, dipendenze non sicure
  • Output: rapporto sulla vulnerabilità con classificazione di gravità (critico, alto, medio, basso)

3. Unit test generati dall’intelligenza artificiale

  • Che cosa fa: genera automaticamente unit test per il nuovo codice
  • Obiettivo di copertura: copertura del codice minima dell‘80% per il nuovo codice
  • Framework di test: Jest (JavaScript/TypeScript), pytest (Python), JUnit (Java)
  • Output: testare i file con asserzioni, casi limite e scenari di errore

4. Convalida dello stile del codice

  • Cosa controlla: formattazione, convenzioni di denominazione, organizzazione dei file
  • Strumenti utilizzati: Prettier, Nero, gofmt (a seconda della lingua)
  • Regole: guida allo stile configurato del tuo progetto
  • Output: codice formattato automaticamente o rapporto sulla violazione dello stile

5. Analisi delle prestazioni

  • Che cosa controlla: complessità temporale, utilizzo della memoria, N+1 query
  • Rilevamento: cicli inefficienti, ricorsione illimitata, indici mancanti
  • Output: avvisi sulle prestazioni con suggerimenti di ottimizzazione

6. Controllo delle dipendenze

  • Cosa controlla: vulnerabilità note nelle dipendenze
  • Database: NVD, database consultivo GitHub, database delle vulnerabilità Snyk
  • Output: elenco delle dipendenze vulnerabili con consigli sull’aggiornamento

Passaggio 2: configura le regole QA

Accedi alle impostazioni QA

  1. Vai alle Impostazioni di fabbrica AI del tuo progetto
  2. Passare a Configurazione Quality Gate

Configura le regole di scansione

Impostazione Opzioni Predefinito
Punteggio di qualità minimo A, B, C, D, F B
Blocco su vulnerabilità critiche Sì/No
Blocco su vulnerabilità elevate Sì/No
Copertura minima del test 0-100% 80%
Violazioni di stile di correzione automatica Sì/No
Numero massimo di tentativi 1-5 2

Regole personalizzate

Aggiungi regole specifiche del progetto:

custom_rules:
  # Require JSDoc comments on all public functions
  - rule: require-jsdoc
    severity: warning
    pattern: "export (function|class)"

  # No console.log in production code
  - rule: no-console-log
    severity: error
    pattern: "console\\.log"
    exclude:
      - "**/*.test.*"
      - "**/debug/**"

  # Maximum function length
  - rule: max-function-length
    severity: warning
    max_lines: 50

Passaggio 3: interpretare i risultati del Quality Gate

Cancello di passaggio

CODICE_BLOCCO_2

Cancello guasto

❌ Quality Gate FAILED

Quality Score:    C (72/100)
Vulnerabilities:  1 High (SQL injection risk in line 42)
Test Coverage:    65% (target: 80%)
Style Issues:     12 (auto-fixed: 8, remaining: 4)
Performance:      1 warning (N+1 query in getUserOrders)
Dependencies:     2 vulnerable packages found

→ Auto-fixing (attempt 1 of 2)

Dopo la correzione automatica

✅ Quality Gate PASSED (after auto-fix)

Quality Score:    B (85/100) — improved from C
Vulnerabilities:  0 Critical, 0 High — SQL injection fixed
Test Coverage:    82% — improved from 65%
Style Issues:     0 — all auto-fixed
Performance:      1 warning remains (manual review needed)
Dependencies:     2 packages updated

→ Ready for Human Review

Passaggio 4: gestire gli errori del Quality Gate

Quando il gate fallisce dopo tutti i tentativi:

  1. Il codice è contrassegnato per la revisione manuale
  2. Il tuo architetto senior riceve un rapporto dettagliato
  3. L’architetto risolve i problemi rimanenti
  4. Il codice viene reinviato attraverso il gate
  5. Una volta superato, viene creato il PR

Motivi comuni di errore

Fallimento Causa tipica Risoluzione
Copertura del test bassa Logica di ramificazione complessa L’architetto aggiunge test sui casi limite
Elevata vulnerabilità Gestione dell’input non sicura L’architetto implementa la sanificazione
Violazioni di stile Modelli non standard Correzione automatica o formattazione manuale
Problemi di prestazioni Algoritmi inefficienti L’architetto ottimizza il codice
Vulnerabilità delle dipendenze Pacchetti obsoleti L’architetto aggiorna le dipendenze

Migliori pratiche

Impostazione delle soglie appropriate

  • Inizia in modo rigoroso: soglie più elevate rilevano più problemi in anticipo
  • Adeguamento in base al progetto: i sistemi critici necessitano di regole più rigide
  • Bilancia velocità e qualità: Troppo rigido = consegna più lenta
  • Revisione mensile: modifica le soglie in base ai modelli di guasto

Approccio che mette la sicurezza al primo posto

  • Non disattivare mai la scansione delle vulnerabilità
  • Blocca sempre sulle vulnerabilità critiche e elevate
  • Esamina settimanalmente le vulnerabilità medie
  • Mantieni automatizzati i controlli delle dipendenze

Testa la qualità

  • Concentrarsi sulla copertura significativa: 80% del codice importante > 100% di tutto
  • Includi casi limite: input nulli, valori limite, percorsi di errore
  • Punti di integrazione del test: chiamate API, query sul database, servizi esterni
  • Esamina i test generati automaticamente: assicurati che testino il comportamento reale, non solo i percorsi del codice

Qual è il prossimo passo?

Hai bisogno di aiuto?

  • Documentazione: docs.4geeks.io
  • Discord: Discord
  • Supporto: disponibile tramite il dashboard della console

Hai ancora domande? Richiedi supporto or explore tutoriali