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
- Layout Usage - CRITICAL
- Bootstrap/Tailwind Obsolete - WARNING
- Componenti NetGescon - INFO
- Controller Namespace - ERROR
- Model Relationships - INFO
- Helper Deprecati - WARNING
- Problemi Sicurezza - CRITICAL
- 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
- ⚡ Scan Before Commit: Scansione pre-commit
- 🎯 Fix Critical First: Priorità problemi critici
- 📚 Learn Patterns: Studiare problemi ricorrenti
- 🔄 Automate: Usare fix automatici quando possibile
Per Team Lead
- 📊 Monitor Trends: Analisi trend qualità
- 🎓 Team Training: Formazione su regole comuni
- 📋 Quality Gates: Soglie qualità per deploy
- 🏆 Recognition: Premiare codice di qualità
Per Project Manager
- 📈 Quality Metrics: KPI qualità nel dashboard
- 💰 ROI Tracking: Benefici sistema qualità
- 🎯 Goal Setting: Obiettivi qualità per team
- 📊 Stakeholder Reports: Report per management
🛡️ Queste regole garantiscono che il codice NetGescon mantenga sempre standard professionali elevati! 🚀