# πŸ› οΈ INSTALLAZIONE E CONFIGURAZIONE - SISTEMA CONTROLLO QUALITΓ€ **Versione**: 1.0.0 **Piattaforma**: Laravel 10+ con NetGescon **Requisiti**: PHP 8.1+, MySQL 5.7+ --- ## ⚑ INSTALLAZIONE RAPIDA ### **Status Attuale** βœ… **SISTEMA GIΓ€ INSTALLATO E OPERATIVO!** Il sistema Γ¨ stato implementato il 23 Luglio 2025 e include: - βœ… Controller completo - βœ… Views responsive - βœ… Routes configurate - βœ… Navigazione integrata - βœ… Documentazione completa ### **Verifica Installazione** ```bash # 1. Verifica file esistenti ls -la app/Http/Controllers/Admin/CodeQualityController.php ls -la resources/views/admin/code-quality/index.blade.php # 2. Test access URL curl -I https://yourdomain.com/admin/code-quality # 3. Check routes php artisan route:list | grep code-quality ``` --- ## πŸ“ STRUTTURA FILE INSTALLATI ### **Controller** ``` πŸ“‚ app/Http/Controllers/Admin/ └── πŸ“„ CodeQualityController.php (8.2KB) β”œβ”€β”€ index() - Dashboard principale β”œβ”€β”€ scan() - Engine scansione AJAX β”œβ”€β”€ autofix() - Fix automatici β”œβ”€β”€ scanCodeQuality() - Core logic β”œβ”€β”€ analyzeFile() - Analisi singolo file β”œβ”€β”€ getFilesToScan() - File discovery β”œβ”€β”€ shouldApplyRule() - Rule filtering β”œβ”€β”€ getLineContext() - Context viewer β”œβ”€β”€ filterBySeverity() - Severity filter β”œβ”€β”€ generateSummary() - Statistics └── applyAutoFix() - Automated fixes ``` ### **Views** ``` πŸ“‚ resources/views/admin/code-quality/ └── πŸ“„ index.blade.php (12.5KB) β”œβ”€β”€ NetGescon layout integration β”œβ”€β”€ Configuration form β”œβ”€β”€ Real-time scanning β”œβ”€β”€ Results dashboard β”œβ”€β”€ Statistics cards β”œβ”€β”€ Interactive fix buttons └── JavaScript automation ``` ### **Routes** ``` πŸ“‚ routes/ └── πŸ“„ web.php (modified) β”œβ”€β”€ Route::prefix('code-quality') β”œβ”€β”€ GET /admin/code-quality (index) β”œβ”€β”€ POST /admin/code-quality/scan └── POST /admin/code-quality/autofix ``` ### **Documentazione** ``` πŸ“‚ docs/sistema-controllo-qualita/ β”œβ”€β”€ πŸ“„ README.md (Sistema overview) β”œβ”€β”€ πŸ“„ REGOLE-CONTROLLO.md (8 regole dettagliate) β”œβ”€β”€ πŸ“„ GUIDA-PRATICA.md (Workflow operativi) └── πŸ“„ INSTALLAZIONE.md (Questo file) ``` --- ## βš™οΈ CONFIGURAZIONE POST-INSTALLAZIONE ### **1. Permissions Setup** ```bash # Assicura permessi corretti per fix automatici chmod 755 app/Http/Controllers/ chmod 644 app/Http/Controllers/Admin/CodeQualityController.php chmod 755 resources/views/admin/code-quality/ chmod 644 resources/views/admin/code-quality/index.blade.php # Permessi scrittura per fix automatici chmod 775 app/ chmod 775 resources/views/ find app/ -type f -name "*.php" -exec chmod 664 {} \; find resources/views/ -type f -name "*.blade.php" -exec chmod 664 {} \; ``` ### **2. Environment Configuration** ```bash # .env additions (opzionale) CODE_QUALITY_ENABLED=true CODE_QUALITY_MAX_FILE_SIZE=1048576 # 1MB CODE_QUALITY_TIMEOUT=30 # 30 secondi CODE_QUALITY_MEMORY_LIMIT=512M ``` ### **3. Cache Optimization** ```bash # Clear cache per nuove routes php artisan route:clear php artisan cache:clear php artisan config:clear # Optimize for production php artisan route:cache php artisan config:cache ``` --- ## πŸ”§ PERSONALIZZAZIONE AVANZATA ### **Aggiungere Regole Custom** ```php // In CodeQualityController.php - $qualityRules array 'custom_netgescon_rule' => [ 'name' => 'NetGescon Custom Check', 'description' => 'Verifica standard specifici NetGescon', 'pattern' => '/your-custom-regex-pattern/m', 'required' => 'Soluzione richiesta', 'severity' => 'warning|error|critical|info' ], ``` ### **Configurare Esclusioni** ```php // In getFilesToScan() method $excludePatterns = [ 'vendor/*', 'node_modules/*', 'storage/logs/*', '_BACKUP_*', '*.min.js', '*.min.css', // Aggiungi pattern custom 'legacy/*', 'external/*', 'temp/*' ]; ``` ### **Personalizzare Fix Automatici** ```php // In applyAutoFix() method switch ($ruleKey) { case 'your_custom_rule': $content = preg_replace( '/old-pattern/', 'new-pattern', $content ); break; // Aggiungi altri fix custom } ``` --- ## πŸ”Œ INTEGRAZIONE CI/CD ### **GitHub Actions** ```yaml # .github/workflows/code-quality.yml name: NetGescon Code Quality on: [push, pull_request] jobs: quality-check: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Setup PHP uses: shivammathur/setup-php@v2 with: php-version: '8.1' - name: Install Dependencies run: composer install --no-dev --optimize-autoloader - name: Run Code Quality Check run: | php artisan code:quality:scan --format=json --output=quality-report.json - name: Upload Quality Report uses: actions/upload-artifact@v3 with: name: quality-report path: quality-report.json ``` ### **Webhook Integration** ```php // routes/api.php - per integrazione esterna Route::post('/webhook/code-quality', function (Request $request) { // Trigger scansione automatica su push $controller = new CodeQualityController(); $results = $controller->scan($request); // Invia notifica su Slack/Teams se critical > 0 if ($results['summary']['by_severity']['critical'] > 0) { // Send alert notification } return response()->json($results); }); ``` --- ## πŸ“Š MONITORING E ALERTING ### **Database Logging** (Opzionale) ```php // Migration per logging risultati Schema::create('code_quality_scans', function (Blueprint $table) { $table->id(); $table->timestamp('scan_date'); $table->integer('total_files'); $table->integer('critical_issues'); $table->integer('error_issues'); $table->integer('warning_issues'); $table->integer('info_issues'); $table->decimal('quality_score', 5, 2); $table->json('detailed_results'); $table->timestamps(); }); ``` ### **Slack Notifications** ```php // In controller, after scan completion if ($summary['by_severity']['critical'] > 0) { Notification::route('slack', config('services.slack.webhook')) ->notify(new CriticalQualityIssuesNotification($summary)); } ``` ### **Email Reports** ```php // Scheduled command for weekly reports // app/Console/Commands/WeeklyQualityReport.php class WeeklyQualityReport extends Command { public function handle() { $controller = new CodeQualityController(); $results = $controller->scanCodeQuality('app,resources/views', 'all'); Mail::to(config('app.admin_email')) ->send(new QualityReportMail($results)); } } ``` --- ## πŸ” DEBUGGING E TROUBLESHOOTING ### **Enable Debug Mode** ```php // In CodeQualityController.php private $debug = true; // Enable for troubleshooting private function debugLog($message, $data = null) { if ($this->debug) { \Log::debug("CodeQuality: $message", $data ? ['data' => $data] : []); } } ``` ### **Performance Profiling** ```php // Add timing to scan methods $startTime = microtime(true); $results = $this->scanCodeQuality($scanPath, $severityFilter); $executionTime = microtime(true) - $startTime; \Log::info("Code Quality Scan completed", [ 'execution_time' => round($executionTime, 2) . 's', 'files_scanned' => count($results), 'memory_used' => memory_get_peak_usage(true) / 1024 / 1024 . 'MB' ]); ``` ### **Error Handling** ```php // Wrap scan operations in try-catch try { $results = $this->scanCodeQuality($scanPath, $severityFilter); } catch (\Exception $e) { \Log::error("Code Quality scan failed", [ 'error' => $e->getMessage(), 'trace' => $e->getTraceAsString() ]); return response()->json([ 'success' => false, 'message' => 'Scansione fallita: ' . $e->getMessage() ], 500); } ``` --- ## πŸ” SECURITY CONSIDERATIONS ### **File Access Control** ```php // Verify file access permissions private function canAccessFile($filePath) { // Prevent access to sensitive files $forbiddenPaths = [ '.env', 'storage/logs/', 'bootstrap/cache/', '.git/' ]; foreach ($forbiddenPaths as $forbidden) { if (Str::contains($filePath, $forbidden)) { return false; } } return is_readable($filePath); } ``` ### **Input Validation** ```php // Validate scan parameters $request->validate([ 'path' => 'required|string|max:500|regex:/^[a-zA-Z0-9\/_,.-]+$/', 'severity' => 'required|in:all,critical,error,warning,info' ]); ``` ### **Rate Limiting** ```php // In routes/web.php Route::prefix('code-quality')->middleware(['throttle:10,1'])->group(function () { // Limit to 10 scans per minute per user }); ``` --- ## πŸ“‹ POST-INSTALL CHECKLIST ### **Verifica FunzionalitΓ ** ```bash βœ… Dashboard accessibile (/admin/code-quality) βœ… Scansione funzionante (test su file piccolo) βœ… Fix automatici operativi βœ… Navigazione integrata (header/sidebar) βœ… Permissions corretti per file modification βœ… Performance accettabile (< 30s per scansione media) βœ… Error handling robusto βœ… Logging configurato ``` ### **Team Onboarding** ```bash βœ… Documentazione condivisa con team βœ… Training session programmata βœ… Best practices comunicate βœ… Quality gates definiti βœ… Workflow integrato nel processo ``` ### **Production Readiness** ```bash βœ… Environment variables configurate βœ… Caching abilitato βœ… Monitoring setup βœ… Backup strategy βœ… Rollback plan βœ… Performance baseline ``` --- ## πŸš€ NEXT STEPS ### **Immediate (Settimana 1)** 1. 🎯 Team training su utilizzo base 2. πŸ“Š Prima scansione completa progetto 3. πŸ”§ Personalizzazione regole per NetGescon 4. πŸ“‹ Definizione quality gates ### **Short Term (Mese 1)** 1. πŸ”„ Integrazione workflow quotidiano 2. πŸ“ˆ Monitoring metriche qualitΓ  3. 🎯 Fix automatici per problemi comuni 4. πŸ‘₯ Feedback raccolta da team ### **Long Term (Trimestre 1)** 1. πŸ€– CI/CD integration completa 2. πŸ“Š Advanced reporting dashboard 3. 🧠 Machine learning per pattern detection 4. 🌐 Multi-project support --- ## πŸ“ž SUPPORT ### **Documentazione** - πŸ“– **README**: Overview completo sistema - πŸ›‘οΈ **REGOLE**: Dettaglio 8 regole controllo - 🎯 **GUIDA**: Workflow pratici operativi - πŸ› οΈ **INSTALL**: Questa guida ### **Contatti** - πŸ€– **Sviluppato da**: GitHub Copilot per NetGescon - πŸ“§ **Support**: Utilizzare sistema ticket NetGescon - πŸ”„ **Updates**: Monitorare docs/ per nuove versioni - πŸ› **Bug Reports**: Via issue tracking interno --- **πŸŽ‰ Il Sistema Controllo QualitΓ  NetGescon Γ¨ ora completamente installato e pronto per elevare la qualitΓ  del vostro codice! πŸš€**