netgescon-day0/app/Console/Commands/CodeQualityScan.php

63 lines
2.4 KiB
PHP

<?php
namespace App\Console\Commands;
use App\Http\Controllers\Admin\CodeQualityController;
use Illuminate\Console\Command;
use Illuminate\Http\Request;
class CodeQualityScan extends Command
{
protected $signature = 'code-quality:scan
{--path=app,resources/views : Percorsi separati da virgole}
{--severity=all : Severità (all|critical|error|warning|info)}
{--module=all : Modulo (es. gescon-import)}
{--menu=all : Menù (es. gescon-import)}
{--stabile= : Codice stabile/id per QA archivi e Ordinarie}
{--anno= : Anno da usare nei controlli QA data-aware}
{--no-data-checks : Disattiva i controlli integrità archivi (DB)}
{--format=csv : Formato export (csv|json)}
{--output= : File di output (se omesso stampa su stdout)}';
protected $description = 'Esegue una scansione qualità codice mirata ed esporta i risultati';
public function handle()
{
$path = $this->option('path');
$severity = $this->option('severity');
$module = $this->option('module');
$menu = $this->option('menu');
$stabile = $this->option('stabile');
$anno = $this->option('anno');
$includeDataChecks = ! $this->option('no-data-checks');
$format = strtolower($this->option('format'));
$output = $this->option('output');
/** @var CodeQualityController $controller */
$controller = app(CodeQualityController::class);
// Usa l'endpoint export per generare CSV/JSON consistente con la UI
$request = Request::create('/admin/code-quality/export', 'POST', [
'path' => $path,
'severity' => $severity,
'module' => $module,
'menu' => $menu,
'stabile' => $stabile,
'anno' => $anno,
'include_data_checks' => $includeDataChecks ? 1 : 0,
'format' => $format,
]);
$response = $controller->export($request);
$content = $response->getContent();
if ($output) {
file_put_contents($output, $content);
$this->info("Report salvato in: {$output}");
} else {
$this->line($content);
}
return Command::SUCCESS;
}
}