Files
michaelschiemer/test_real_discovery.php
Michael Schiemer 55a330b223 Enable Discovery debug logging for production troubleshooting
- Add DISCOVERY_LOG_LEVEL=debug
- Add DISCOVERY_SHOW_PROGRESS=true
- Temporary changes for debugging InitializerProcessor fixes on production
2025-08-11 20:13:26 +02:00

102 lines
3.8 KiB
PHP

<?php
require_once __DIR__ . '/vendor/autoload.php';
use App\Framework\Discovery\Processing\ClassExtractor;
use App\Framework\Filesystem\File;
use App\Framework\Filesystem\FileSystemService;
use App\Framework\Tokenizer\Discovery\DiscoveryTokenizer;
// Teste Discovery mit einer echten Datei aus dem Projekt
$realFile = __DIR__ . '/src/Framework/Http/HttpRequest.php';
if (!file_exists($realFile)) {
echo "❌ Test file not found: $realFile\n";
echo "Available files in Framework/Http:\n";
$files = glob(__DIR__ . '/src/Framework/Http/*.php');
foreach ($files as $file) {
echo " - " . basename($file) . "\n";
}
exit(1);
}
echo "=== Testing Real Discovery Issues ===\n";
echo "Testing file: $realFile\n\n";
try {
$file = File::fromSplFileInfo(new \SplFileInfo($realFile));
$fileSystemService = new FileSystemService();
$classExtractor = new ClassExtractor($fileSystemService);
echo "1. Basic class extraction:\n";
$classes = $classExtractor->extractFromFile($file);
echo " Found " . count($classes) . " classes:\n";
foreach ($classes as $class) {
echo " - $class\n";
}
echo "\n2. Detailed class extraction:\n";
$detailedClasses = $classExtractor->extractDetailedFromFile($file);
echo " Found " . count($detailedClasses) . " detailed classes:\n";
foreach ($detailedClasses as $class) {
echo " - {$class['type']}: {$class['name']} (line {$class['line']})\n";
echo " Namespace: " . ($class['namespace'] ?? 'NONE') . "\n";
}
echo "\n3. Function extraction:\n";
$functions = $classExtractor->extractFunctionsFromFile($file);
echo " Found " . count($functions) . " functions:\n";
foreach ($functions as $func) {
echo " - {$func['type']}: {$func['name']} (line {$func['line']})\n";
echo " Visibility: {$func['visibility']}, Class: " . ($func['class'] ?? 'NONE') . "\n";
}
echo "\n4. Use statements:\n";
$uses = $classExtractor->extractUseStatementsFromFile($file);
echo " Found " . count($uses) . " use statements:\n";
foreach ($uses as $use) {
echo " - {$use['class']} (line {$use['line']})\n";
if ($use['alias']) {
echo " Alias: {$use['alias']}\n";
}
}
echo "\n5. Complete analysis:\n";
$analysis = $classExtractor->analyzeFile($file);
echo " Classes: " . count($analysis['classes']) . "\n";
echo " Functions: " . count($analysis['functions']) . "\n";
echo " Uses: " . count($analysis['uses']) . "\n";
echo " Attributes: " . count($analysis['attributes']) . "\n";
// Check if this is actually working
if (count($analysis['classes']) === 0 && count($analysis['functions']) === 0) {
echo "\n❌ CRITICAL: No classes or functions found - Discovery is broken!\n";
echo "\n6. Debug: File content preview:\n";
$content = file_get_contents($realFile);
echo " File size: " . strlen($content) . " bytes\n";
echo " First 300 characters:\n";
echo " " . substr($content, 0, 300) . "...\n";
echo "\n7. Debug: Direct tokenizer test:\n";
$tokenizer = new DiscoveryTokenizer();
$directClasses = $tokenizer->extractClasses($content);
echo " Direct tokenizer found " . count($directClasses) . " classes\n";
if (count($directClasses) > 0) {
foreach ($directClasses as $class) {
echo " - {$class['type']}: {$class['name']}\n";
}
}
} else {
echo "\n✅ Discovery appears to be working correctly!\n";
}
} catch (\Exception $e) {
echo "❌ Error during discovery test: " . $e->getMessage() . "\n";
echo "❌ Stack trace: " . $e->getTraceAsString() . "\n";
}
echo "\n=== Real Discovery Test Complete ===\n";