netgescon-day0/docs/00-MASTER-DOCS-UNIFICATI/03-MANUALI-OPERATIVI/REGOLE-CONTROLLO.md

11 KiB
Executable File

🛡️ REGOLE CONTROLLO QUALITÀ NETGESCON

Versione Regole: 1.0.0
Ultima Modifica: 23 Luglio 2025
Copertura: PHP, Blade, JavaScript, TypeScript


📋 INDICE REGOLE

  1. Layout Usage - CRITICAL
  2. Bootstrap/Tailwind Obsolete - WARNING
  3. Componenti NetGescon - INFO
  4. Controller Namespace - ERROR
  5. Model Relationships - INFO
  6. Helper Deprecati - WARNING
  7. Problemi Sicurezza - CRITICAL
  8. Standard Migration - INFO

🔴 REGOLE CRITICAL

1. Layout Usage

ID: layout_usage
Severità: 🔴 CRITICAL
File Target: *.blade.php

Descrizione

Verifica che tutte le view Blade utilizzino il layout NetGescon standard invece di layout obsoleti o generici.

Pattern Ricerca

/(@extends\([\'"]admin\.layouts\.netgescon[\'"].*\)|@extends\([\'"]layouts\.app[\'"].*\))/m

Problemi Rilevati

❌ SBAGLIATO:
@extends('layouts.app')
@extends('layouts.master')
@extends('adminlte::page')

✅ CORRETTO:
@extends('admin.layouts.netgescon')

Fix Automatico

// Conversione automatica
"@extends('layouts.app')"  "@extends('admin.layouts.netgescon')"

Impatto Business

  • 🎨 Consistenza UI: Interfaccia uniforme
  • 🏷️ Branding: Rispetto identità NetGescon
  • 📱 Responsive: Layout ottimizzato
  • 🚀 Performance: CSS ottimizzato

7. Problemi Sicurezza

ID: security_issues
Severità: 🔴 CRITICAL
File Target: *.php

Descrizione

Rileva potenziali vulnerabilità di sicurezza nel codice PHP, inclusi SQL injection, XSS e input non validati.

Pattern Ricerca

/(\$_GET|\$_POST|\$_REQUEST|DB::raw\s*\(\s*[\'"][^\'"]*(SELECT|INSERT|UPDATE|DELETE))/im

Problemi Rilevati

 VULNERABILITÀ CRITICA:
$name = $_GET['name'];  // Input non validato
$sql = "SELECT * FROM users WHERE name = " . $_POST['name'];  // SQL Injection
DB::raw("SELECT * FROM table WHERE id = " . $request->id);  // SQL Injection

 SICURO:
$name = $request->validated()['name'];  // Validazione Request
$users = User::where('name', $request->name)->get();  // Query Builder
DB::raw('COUNT(*) as total');  // Query statiche sicure

Fix Automatico

Non disponibile - Richiede revisione manuale obbligatoria

Impatto Business

  • 🛡️ Sicurezza Dati: Protezione database
  • ⚖️ Compliance: Rispetto normative GDPR
  • 💰 Risk Management: Evita breach costosi
  • 🏆 Reputazione: Fiducia clienti

🟠 REGOLE ERROR

4. Controller Namespace

ID: controller_namespace
Severità: 🟠 ERROR
File Target: app/Http/Controllers/*.php

Descrizione

Verifica che tutti i controller abbiano il namespace corretto secondo l'architettura NetGescon.

Pattern Ricerca

/namespace App\\\\Http\\\\Controllers\\\\Admin;/m

Problemi Rilevati

 NAMESPACE SBAGLIATO:
namespace App\Http\Controllers;
namespace App\Controllers;
namespace Controllers;

 NAMESPACE CORRETTO:
namespace App\Http\Controllers\Admin;

Fix Automatico

Non disponibile - Può causare breaking changes

Impatto Business

  • 🏗️ Architettura: Struttura progetto coerente
  • 🔍 Debugging: Più facile individuare file
  • 📈 Scalabilità: Organizzazione per crescita
  • 👥 Team: Comprensione condivisa

🟡 REGOLE WARNING

2. Bootstrap/Tailwind Obsolete

ID: bootstrap_classes
Severità: 🟡 WARNING
File Target: *.blade.php

Descrizione

Rileva l'utilizzo di classi CSS obsolete (Bootstrap/Tailwind) che dovrebbero essere sostituite con componenti NetGescon.

Pattern Ricerca

/(btn-primary|btn-secondary|btn-success|btn-danger|btn-warning|btn-info|bg-blue-500|bg-gray-100|text-gray-900)/m

Problemi Rilevati

❌ CLASSI OBSOLETE:
<button class="btn btn-primary">Salva</button>
<div class="bg-blue-500 text-white">Card</div>
<p class="text-gray-900">Testo</p>

✅ CLASSI NETGESCON:
<button class="netgescon-btn netgescon-btn-primary">Salva</button>
<div class="netgescon-card">Card</div>
<p class="netgescon-text">Testo</p>

Fix Automatico

// Mappature automatiche
'btn-primary'  'netgescon-btn netgescon-btn-primary'
'btn-secondary'  'netgescon-btn netgescon-btn-secondary'
'bg-blue-500'  'netgescon-bg-primary'
'text-gray-900'  'netgescon-text'

Impatto Business

  • 🎨 Design System: Coerenza visiva
  • 📱 Responsive: Breakpoint ottimizzati
  • 🚀 Performance: CSS bundle ridotto
  • 🔧 Manutenzione: Un solo sistema CSS

6. Helper Deprecati

ID: deprecated_helpers
Severità: 🟡 WARNING
File Target: *.php

Descrizione

Rileva l'uso di helper Laravel deprecati che potrebbero essere rimossi in versioni future.

Pattern Ricerca

/(array_get|array_set|str_contains|str_starts_with)\s*\(/m

Problemi Rilevati

 HELPER DEPRECATI:
array_get($array, 'key', 'default');
str_contains($string, 'search');
str_starts_with($string, 'prefix');

 HELPER MODERNI:
Arr::get($array, 'key', 'default');
Str::contains($string, 'search');
Str::startsWith($string, 'prefix');

Fix Automatico

Non disponibile - Richiede import delle classi

Impatto Business

  • 🔄 Future-Proof: Compatibilità versioni future
  • 📈 Performance: Helper ottimizzati
  • 📚 Best Practices: Codice Laravel moderno
  • 🛠️ Maintenance: Meno breaking changes

🔵 REGOLE INFO

3. Componenti NetGescon

ID: netgescon_components
Severità: 🔵 INFO
File Target: *.blade.php

Descrizione

Verifica e monitora l'utilizzo corretto dei componenti del design system NetGescon.

Pattern Ricerca

/(netgescon-btn|netgescon-card|netgescon-title|netgescon-text|netgescon-input)/m

Componenti Monitorati

✅ COMPONENTI RILEVATI:
- netgescon-btn (Bottoni)
- netgescon-card (Cards)  
- netgescon-title (Titoli)
- netgescon-text (Testi)
- netgescon-input (Form inputs)
- netgescon-badge (Badge)
- netgescon-alert (Alerti)

Fix Automatico

Solo monitoraggio - Nessun fix richiesto

Impatto Business

  • 📊 Analytics: Usage pattern componenti
  • 🎯 Adoption: Tasso adozione design system
  • 📈 Metrics: KPI qualità interfaccia

5. Model Relationships

ID: model_relationships
Severità: 🔵 INFO
File Target: app/Models/*.php

Descrizione

Monitora la definizione delle relazioni Eloquent per assicurare architettura database coerente.

Pattern Ricerca

/(belongsTo|hasMany|hasOne|belongsToMany)\s*\(\s*[\'"][A-Z]/m

Relazioni Monitorate

 RELAZIONI RILEVATE:
public function user() {
    return $this->belongsTo(User::class);
}

public function posts() {
    return $this->hasMany(Post::class);
}

public function tags() {
    return $this->belongsToMany(Tag::class);
}

Fix Automatico

Solo monitoraggio - Verifica architettura

Impatto Business

  • 🏗️ Database Design: Architettura coerente
  • 📊 Performance: Query ottimizzate
  • 🔗 Data Integrity: Relazioni corrette

8. Standard Migration

ID: migration_standards
Severità: 🔵 INFO
File Target: database/migrations/*.php

Descrizione

Monitora l'aderenza agli standard Laravel per le migration del database.

Pattern Ricerca

/(Schema::create|Schema::table|Schema::dropIfExists)/m

Standard Monitorati

 STANDARD LARAVEL:
Schema::create('table_name', function (Blueprint $table) {
    $table->id();
    $table->timestamps();
});

Schema::table('table_name', function (Blueprint $table) {
    $table->string('new_column');
});

Schema::dropIfExists('table_name');

Fix Automatico

Solo monitoraggio - Verifica standard

Impatto Business

  • 🗃️ Database Consistency: Schema uniforme
  • 🔄 Deployment: Migration affidabili
  • 📈 Scalability: Struttura estendibile

🎯 CONFIGURAZIONE PERSONALIZZATA

Soglie di Qualità

// Configurazione severità
'quality_thresholds' => [
    'critical' => 0,      // Zero toleranza
    'error' => 5,         // Massimo 5 errori
    'warning' => 20,      // Massimo 20 warning
    'info' => 'unlimited' // Solo monitoraggio
]

Esclusioni File

// File da escludere dalla scansione
'exclude_patterns' => [
    'vendor/*',
    'node_modules/*', 
    'storage/*',
    '_BACKUP_*',
    '*.min.js'
]

Regole Custom

// Aggiungere regole specifiche progetto
'custom_rules' => [
    'netgescon_copyright' => [
        'pattern' => '/Copyright.*NetGescon/m',
        'required' => 'Header copyright NetGescon',
        'severity' => 'warning'
    ]
]

📊 METRICHE E KPI

Metriche Qualità

  • Code Quality Score: (Total Files - Files With Critical Issues) / Total Files * 100
  • Fix Rate: Auto Fixed Issues / Total Fixable Issues * 100
  • Compliance Rate: Files Without Warnings / Total Files * 100
  • Technical Debt: Sum of all weighted issues by severity

Reporting Periodico

  • 📅 Daily: Critical issues = 0
  • 📊 Weekly: Quality trends e fix rate
  • 📈 Monthly: Compliance evolution
  • 🎯 Quarterly: Architecture reviews

🔧 TROUBLESHOOTING REGOLE

Falsi Positivi

// Gestione eccezioni per regole specifiche
if (Str::contains($filePath, 'legacy/') || 
    Str::contains($filePath, 'external/')) {
    // Skip controlli per codice legacy/esterno
    continue;
}

Performance Issues

  • File Grandi: Limitare scansione a 1MB per file
  • 🔄 Cache Results: Cache risultati per file non modificati
  • 🎯 Selective Scan: Scansionare solo file modificati
  • 📊 Batch Processing: Processare file in batch da 100

Memory Management

// Prevenzione memory exhaustion
ini_set('memory_limit', '512M');
gc_collect_cycles(); // Garbage collection forzata

🚀 BEST PRACTICES

Per Sviluppatori

  1. Scan Before Commit: Scansione pre-commit
  2. 🎯 Fix Critical First: Priorità problemi critici
  3. 📚 Learn Patterns: Studiare problemi ricorrenti
  4. 🔄 Automate: Usare fix automatici quando possibile

Per Team Lead

  1. 📊 Monitor Trends: Analisi trend qualità
  2. 🎓 Team Training: Formazione su regole comuni
  3. 📋 Quality Gates: Soglie qualità per deploy
  4. 🏆 Recognition: Premiare codice di qualità

Per Project Manager

  1. 📈 Quality Metrics: KPI qualità nel dashboard
  2. 💰 ROI Tracking: Benefici sistema qualità
  3. 🎯 Goal Setting: Obiettivi qualità per team
  4. 📊 Stakeholder Reports: Report per management

🛡️ Queste regole garantiscono che il codice NetGescon mantenga sempre standard professionali elevati! 🚀