- Add DISCOVERY_LOG_LEVEL=debug - Add DISCOVERY_SHOW_PROGRESS=true - Temporary changes for debugging InitializerProcessor fixes on production
102 lines
3.8 KiB
PHP
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"; |