1
0
Fork 0
php-language-server/benchmarks/parsing.php

87 lines
2.3 KiB
PHP
Raw Normal View History

<?php
namespace LanguageServer\Tests;
require __DIR__ . '/../vendor/autoload.php';
use Composer\XdebugHandler\XdebugHandler;
use Exception;
use LanguageServer\DefinitionResolver;
use LanguageServer\Index\Index;
use LanguageServer\PhpDocument;
use LanguageServer\StderrLogger;
use Microsoft\PhpParser;
use phpDocumentor\Reflection\DocBlockFactory;
use RecursiveDirectoryIterator;
use RecursiveIteratorIterator;
$logger = new StderrLogger();
$xdebugHandler = new XdebugHandler('PHPLS');
$xdebugHandler->setLogger($logger);
$xdebugHandler->check();
unset($xdebugHandler);
$totalSize = 0;
2018-11-27 16:51:40 +00:00
$frameworks = [
"drupal",
"wordpress",
"php-language-server",
"tolerant-php-parser",
"math-php",
"symfony",
"codeigniter",
"cakephp"
];
foreach ($frameworks as $framework) {
$iterator = new RecursiveDirectoryIterator(__DIR__ . "/../validation/frameworks/$framework");
$testProviderArray = array();
foreach (new RecursiveIteratorIterator($iterator) as $file) {
2018-11-27 16:51:40 +00:00
if (strpos((string) $file, ".php") !== false) {
$totalSize += $file->getSize();
$testProviderArray[] = $file->getPathname();
}
}
if (count($testProviderArray) === 0) {
2018-11-27 16:51:40 +00:00
throw new Exception(
"ERROR: Validation testsuite frameworks not found - run `git submodule update --init --recursive` to download."
);
}
$start = microtime(true);
foreach ($testProviderArray as $idx => $testCaseFile) {
if (filesize($testCaseFile) > 10000) {
continue;
}
if ($idx % 500 === 0) {
echo $idx . '/' . count($testProviderArray) . PHP_EOL;
}
$fileContents = file_get_contents($testCaseFile);
$docBlockFactory = DocBlockFactory::createInstance();
2018-11-27 16:51:40 +00:00
$index = new Index();
$maxRecursion = [];
$definitions = [];
$definitionResolver = new DefinitionResolver($index);
$parser = new PhpParser\Parser();
2018-11-27 16:51:40 +00:00
$document = new PhpDocument(
$testCaseFile,
$fileContents,
$index,
$parser,
$docBlockFactory,
$definitionResolver
);
}
echo "------------------------------\n";
echo "Time [$framework]: " . (microtime(true) - $start) . PHP_EOL;
}