/** * Main method. */ public function main() { $input = new ezcConsoleInput(); $output = new ezcConsoleOutput(); $input->registerOption(new ezcConsoleOption('', 'count-tests', ezcConsoleInput::TYPE_NONE, FALSE, FALSE)); $input->registerOption(new ezcConsoleOption('', 'exclude', ezcConsoleInput::TYPE_STRING, array(), TRUE)); $input->registerOption(new ezcConsoleOption('h', 'help', ezcConsoleInput::TYPE_NONE, NULL, FALSE, '', '', array(), array(), FALSE, FALSE, TRUE)); $input->registerOption(new ezcConsoleOption('', 'log-xml', ezcConsoleInput::TYPE_STRING)); $input->registerOption(new ezcConsoleOption('', 'log-csv', ezcConsoleInput::TYPE_STRING)); $input->registerOption(new ezcConsoleOption('', 'suffixes', ezcConsoleInput::TYPE_STRING, 'php', FALSE)); $input->registerOption(new ezcConsoleOption('v', 'version', ezcConsoleInput::TYPE_NONE, NULL, FALSE, '', '', array(), array(), FALSE, FALSE, TRUE)); $input->registerOption(new ezcConsoleOption('', 'progress', ezcConsoleInput::TYPE_NONE)); try { $input->process(); } catch (ezcConsoleOptionException $e) { print $e->getMessage() . "\n"; exit(1); } if ($input->getOption('help')->value) { $this->showHelp(); exit(0); } else { if ($input->getOption('version')->value) { $this->printVersionString(); exit(0); } } $arguments = $input->getArguments(); if (empty($arguments)) { $this->showHelp(); exit(1); } $countTests = $input->getOption('count-tests')->value; $excludes = $input->getOption('exclude')->value; $logXml = $input->getOption('log-xml')->value; $logCsv = $input->getOption('log-csv')->value; $suffixes = array_map('trim', explode(',', $input->getOption('suffixes')->value)); if ($input->getOption('progress')->value !== FALSE) { $progress = $output; } else { $progress = NULL; } $this->printVersionString(); $files = $this->findFiles($arguments, $excludes, $suffixes); if (empty($files)) { $this->showError("No files found to scan.\n"); } $analyser = new PHPLOC_Analyser($progress); $count = $analyser->countFiles($files, $countTests); $printer = new PHPLOC_TextUI_ResultPrinter_Text(); $printer->printResult($count, $countTests); if ($logXml) { $printer = new PHPLOC_TextUI_ResultPrinter_XML(); $printer->printResult($logXml, $count); } if ($logCsv) { $printer = new PHPLOC_TextUI_ResultPrinter_CSV(); $printer->printResult($logCsv, $count); } }
/** * Main method. */ public function main() { $input = new ezcConsoleInput(); $output = new ezcConsoleOutput(); $input->registerOption(new ezcConsoleOption('', 'exclude', ezcConsoleInput::TYPE_STRING, array(), TRUE)); $input->registerOption(new ezcConsoleOption('h', 'help', ezcConsoleInput::TYPE_NONE, NULL, FALSE, '', '', array(), array(), FALSE, FALSE, TRUE)); $input->registerOption(new ezcConsoleOption('', 'recursive', ezcConsoleInput::TYPE_NONE)); $input->registerOption(new ezcConsoleOption('', 'suffixes', ezcConsoleInput::TYPE_STRING, 'php', FALSE)); $input->registerOption(new ezcConsoleOption('v', 'version', ezcConsoleInput::TYPE_NONE, NULL, FALSE, '', '', array(), array(), FALSE, FALSE, TRUE)); $input->registerOption(new ezcConsoleOption('', 'verbose', ezcConsoleInput::TYPE_NONE)); try { $input->process(); } catch (ezcConsoleOptionException $e) { print $e->getMessage() . "\n"; exit(1); } if ($input->getOption('help')->value) { $this->showHelp(); exit(0); } else { if ($input->getOption('version')->value) { $this->printVersionString(); exit(0); } } $arguments = $input->getArguments(); if (empty($arguments)) { $this->showHelp(); exit(1); } $excludes = $input->getOption('exclude')->value; $recursive = $input->getOption('recursive')->value; $suffixes = explode(',', $input->getOption('suffixes')->value); array_map('trim', $suffixes); if ($input->getOption('verbose')->value !== FALSE) { $verbose = $output; } else { $verbose = NULL; } $this->printVersionString(); $files = $this->findFiles($arguments, $excludes, $suffixes); if (empty($files)) { $this->showError("No files found to scan.\n"); } $detector = new PHPDCD_Detector($verbose); $result = $detector->detectDeadCode($files, $recursive); $printer = new PHPDCD_TextUI_ResultPrinter(); $printer->printResult($result, $commonPath); unset($printer); }
/** * Main method. */ public static function main() { $input = new ezcConsoleInput(); $input->registerOption(new ezcConsoleOption('', 'bootstrap', ezcConsoleInput::TYPE_STRING)); $input->registerOption(new ezcConsoleOption('', 'class', ezcConsoleInput::TYPE_NONE)); $input->registerOption(new ezcConsoleOption('', 'test', ezcConsoleInput::TYPE_NONE)); $input->registerOption(new ezcConsoleOption('h', 'help', ezcConsoleInput::TYPE_NONE, NULL, FALSE, '', '', array(), array(), FALSE, FALSE, TRUE)); $input->registerOption(new ezcConsoleOption('v', 'version', ezcConsoleInput::TYPE_NONE, NULL, FALSE, '', '', array(), array(), FALSE, FALSE, TRUE)); try { $input->process(); } catch (ezcConsoleOptionException $e) { print $e->getMessage() . "\n"; exit(1); } if ($input->getOption('help')->value) { self::showHelp(); exit(0); } else { if ($input->getOption('version')->value) { self::printVersionString(); exit(0); } } $arguments = $input->getArguments(); $bootstrap = $input->getOption('bootstrap')->value; $class = $input->getOption('class')->value; $test = $input->getOption('test')->value; if (empty($arguments) || !$class && !$test || $class && $test) { self::showHelp(); exit(1); } if ($class) { $reflector = new ReflectionClass('PHPUnit_SkeletonGenerator_Class'); } else { if ($test) { $reflector = new ReflectionClass('PHPUnit_SkeletonGenerator_Test'); } } self::printVersionString(); if ($bootstrap && file_exists($bootstrap)) { include $bootstrap; } $generator = $reflector->newInstanceArgs($arguments); $generator->write(); printf('Wrote skeleton for "%s" to "%s".' . "\n", $generator->getOutClassName(), $generator->getOutSourceFile()); exit(0); }
/** * starts the command line interface for pFlow * @return void */ public function run() { $this->setupInput(); try { $this->input->process(); } catch (\ezcConsoleOptionException $e) { die($e->getMessage() . "\nTry option -h to get a list of available options.\n"); } catch (\ezcConsoleArgumentMandatoryViolationException $e) { die($e->getMessage() . "\nTry option -h to get a list of available options.\n"); } if ($this->input->helpOptionSet()) { echo $this->input->getHelpText("\npFlow version " . self::VERSION . "\n\n" . "A tool for analysing control and data flow in PHP applications."); } else { // start generation $this->analyzer->setSources($this->input->getArguments(), $this->input->getOption('recursive')->value); } }
/** * Main method. */ public static function main() { $input = new ezcConsoleInput(); $input->registerOption(new ezcConsoleOption('h', 'help', ezcConsoleInput::TYPE_NONE, NULL, FALSE, '', '', array(), array(), FALSE, FALSE, TRUE)); $input->registerOption(new ezcConsoleOption('v', 'version', ezcConsoleInput::TYPE_NONE, NULL, FALSE, '', '', array(), array(), FALSE, FALSE, TRUE)); try { $input->process(); } catch (ezcConsoleOptionException $e) { print $e->getMessage() . "\n"; exit(1); } if ($input->getOption('help')->value) { self::showHelp(); exit(0); } else { if ($input->getOption('version')->value) { self::printVersionString(); exit(0); } } $arguments = $input->getArguments(); if (empty($arguments)) { self::showHelp(); exit(1); } self::printVersionString(); print "Line Token Text\n" . str_repeat('-', 79) . "\n"; foreach (new PHP_Token_Stream($arguments[0]) as $token) { if ($token instanceof PHP_Token_WHITESPACE) { $text = ''; } else { $text = str_replace(array("\r", "\n"), '', (string) $token); if (strlen($text) > 40) { $text = explode("\n", wordwrap($text, 40)); $text = $text[0]; } } printf("%5d %-30s %s\n", $token->getLine(), str_replace('PHP_Token_', '', get_class($token)), $text); } }
/** * Main method. */ public function main() { $input = new \ezcConsoleInput(); $input->registerOption(new \ezcConsoleOption('', 'clover', \ezcConsoleInput::TYPE_STRING)); $input->registerOption(new \ezcConsoleOption('', 'configuration', \ezcConsoleInput::TYPE_STRING)); $input->registerOption(new \ezcConsoleOption('', 'html', \ezcConsoleInput::TYPE_STRING)); $input->registerOption(new \ezcConsoleOption('', 'php', \ezcConsoleInput::TYPE_STRING)); $input->registerOption(new \ezcConsoleOption('', 'text', \ezcConsoleInput::TYPE_STRING)); $input->registerOption(new \ezcConsoleOption('', 'blacklist', \ezcConsoleInput::TYPE_STRING, array(), TRUE)); $input->registerOption(new \ezcConsoleOption('', 'whitelist', \ezcConsoleInput::TYPE_STRING, array(), TRUE)); $input->registerOption(new \ezcConsoleOption('', 'merge', \ezcConsoleInput::TYPE_NONE, FALSE)); $input->registerOption(new \ezcConsoleOption('', 'add-uncovered', \ezcConsoleInput::TYPE_NONE, FALSE)); $input->registerOption(new \ezcConsoleOption('', 'process-uncovered', \ezcConsoleInput::TYPE_NONE, FALSE)); $input->registerOption(new \ezcConsoleOption('h', 'help', \ezcConsoleInput::TYPE_NONE, NULL, FALSE, '', '', array(), array(), FALSE, FALSE, TRUE)); $input->registerOption(new \ezcConsoleOption('v', 'version', \ezcConsoleInput::TYPE_NONE, NULL, FALSE, '', '', array(), array(), FALSE, FALSE, TRUE)); try { $input->process(); } catch (ezcConsoleOptionException $e) { print $e->getMessage() . "\n"; exit(1); } if ($input->getOption('help')->value) { $this->showHelp(); exit(0); } else { if ($input->getOption('version')->value) { $this->printVersionString(); exit(0); } } $arguments = $input->getArguments(); $clover = $input->getOption('clover')->value; $configuration = $input->getOption('configuration')->value; $html = $input->getOption('html')->value; $php = $input->getOption('php')->value; $text = $input->getOption('text')->value; $blacklist = $input->getOption('blacklist')->value; $whitelist = $input->getOption('whitelist')->value; $addUncovered = $input->getOption('add-uncovered')->value; $processUncovered = $input->getOption('process-uncovered')->value; $merge = $input->getOption('merge')->value; $coverage = new \PHP_CodeCoverage(); $filter = $coverage->filter(); if ($configuration) { $this->handleConfiguration($configuration, $coverage); } if (count($arguments) == 1) { $this->printVersionString(); if (empty($whitelist)) { $c = new \ReflectionClass('ezcBase'); $filter->addDirectoryToBlacklist(dirname($c->getFileName())); $c = new \ReflectionClass('ezcConsoleInput'); $filter->addDirectoryToBlacklist(dirname($c->getFileName())); foreach ($blacklist as $item) { if (is_dir($item)) { $filter->addDirectoryToBlacklist($item); } else { if (is_file($item)) { $filter->addFileToBlacklist($item); } } } } else { $coverage->setAddUncoveredFilesFromWhitelist($addUncovered); $coverage->setProcessUncoveredFilesFromWhitelist($processUncovered); foreach ($whitelist as $item) { if (is_dir($item)) { $filter->addDirectoryToWhitelist($item); } else { if (is_file($item)) { $filter->addFileToWhitelist($item); } } } } if (!$merge) { $coverage->start('phpcov'); require $arguments[0]; $coverage->stop(); } else { $facade = new \File_Iterator_Facade(); $files = $facade->getFilesAsArray($arguments[0], '.cov'); foreach ($files as $file) { $coverage->merge(unserialize(file_get_contents($file))); } } if ($clover) { print "\nGenerating code coverage report in Clover XML format ..."; $writer = new \PHP_CodeCoverage_Report_Clover(); $writer->process($coverage, $clover); print " done\n"; } if ($html) { print "\nGenerating code coverage report in HTML format ..."; $writer = new \PHP_CodeCoverage_Report_HTML(); $writer->process($coverage, $html); print " done\n"; } if ($php) { print "\nGenerating code coverage report in PHP format ..."; $writer = new \PHP_CodeCoverage_Report_PHP(); $writer->process($coverage, $php); print " done\n"; } if ($text) { $writer = new \PHP_CodeCoverage_Report_Text(); $writer->process($coverage, $text); } } else { $this->showHelp(); exit(1); } }
/** * Main method. */ public static function main() { $input = new ezcConsoleInput(); $input->registerOption(new ezcConsoleOption('', 'clover', ezcConsoleInput::TYPE_STRING)); $input->registerOption(new ezcConsoleOption('', 'html', ezcConsoleInput::TYPE_STRING)); $input->registerOption(new ezcConsoleOption('', 'blacklist', ezcConsoleInput::TYPE_STRING, array(), TRUE)); $input->registerOption(new ezcConsoleOption('', 'whitelist', ezcConsoleInput::TYPE_STRING, array(), TRUE)); $input->registerOption(new ezcConsoleOption('', 'merge', ezcConsoleInput::TYPE_NONE, FALSE)); $input->registerOption(new ezcConsoleOption('h', 'help', ezcConsoleInput::TYPE_NONE, NULL, FALSE, '', '', array(), array(), FALSE, FALSE, TRUE)); $input->registerOption(new ezcConsoleOption('v', 'version', ezcConsoleInput::TYPE_NONE, NULL, FALSE, '', '', array(), array(), FALSE, FALSE, TRUE)); try { $input->process(); } catch (ezcConsoleOptionException $e) { print $e->getMessage() . "\n"; exit(1); } if ($input->getOption('help')->value) { self::showHelp(); exit(0); } else { if ($input->getOption('version')->value) { self::printVersionString(); exit(0); } } $arguments = $input->getArguments(); $clover = $input->getOption('clover')->value; $html = $input->getOption('html')->value; $blacklist = $input->getOption('blacklist')->value; $whitelist = $input->getOption('whitelist')->value; $merge = $input->getOption('merge')->value; if (count($arguments) == 1) { self::printVersionString(); $coverage = new PHP_CodeCoverage(); $filter = $coverage->filter(); if (empty($whitelist)) { $c = new ReflectionClass('ezcBase'); $filter->addDirectoryToBlacklist(dirname($c->getFileName())); $c = new ReflectionClass('ezcConsoleInput'); $filter->addDirectoryToBlacklist(dirname($c->getFileName())); foreach ($blacklist as $item) { if (is_dir($item)) { $filter->addDirectoryToBlacklist($item); } else { if (is_file($item)) { $filter->addFileToBlacklist($item); } } } } else { foreach ($whitelist as $item) { if (is_dir($item)) { $filter->addDirectoryToWhitelist($item); } else { if (is_file($item)) { $filter->addFileToWhitelist($item); } } } } if (!$merge) { $coverage->start('phpcov'); require $arguments[0]; $coverage->stop(); } else { $facade = new File_Iterator_Facade(); $result = $facade->getFilesAsArray($arguments[0], '.cov'); foreach ($files as $file) { $coverage->merge(unserialize(file_get_contents($file))); } } if ($clover) { $writer = new PHP_CodeCoverage_Report_Clover(); $writer->process($coverage, $clover); } if ($html) { $writer = new PHP_CodeCoverage_Report_HTML(); $writer->process($coverage, $html); } } else { self::showHelp(); exit(1); } }
/** * Main method. */ public function main() { $input = new \ezcConsoleInput(); $input->registerOption(new \ezcConsoleOption('', 'exclude', \ezcConsoleInput::TYPE_STRING, array(), TRUE)); $input->registerOption(new \ezcConsoleOption('h', 'help', \ezcConsoleInput::TYPE_NONE, NULL, FALSE, '', '', array(), array(), FALSE, FALSE, TRUE)); $input->registerOption(new \ezcConsoleOption('', 'log-pmd', \ezcConsoleInput::TYPE_STRING)); $input->registerOption(new \ezcConsoleOption('', 'min-lines', \ezcConsoleInput::TYPE_INT, 5)); $input->registerOption(new \ezcConsoleOption('', 'min-tokens', \ezcConsoleInput::TYPE_INT, 70)); $input->registerOption(new \ezcConsoleOption('', 'names', \ezcConsoleInput::TYPE_STRING, '*.php', FALSE)); $input->registerOption(new \ezcConsoleOption('', 'quiet', \ezcConsoleInput::TYPE_NONE, NULL, FALSE)); $input->registerOption(new \ezcConsoleOption('v', 'version', \ezcConsoleInput::TYPE_NONE, NULL, FALSE, '', '', array(), array(), FALSE, FALSE, TRUE)); $input->registerOption(new \ezcConsoleOption('', 'progress', \ezcConsoleInput::TYPE_NONE)); $input->registerOption(new \ezcConsoleOption('', 'verbose', \ezcConsoleInput::TYPE_NONE)); try { $input->process(); } catch (\ezcConsoleOptionException $e) { print $e->getMessage() . "\n"; exit(1); } if ($input->getOption('help')->value) { $this->showHelp(); exit(0); } else { if ($input->getOption('version')->value) { $this->printVersionString(); exit(0); } } $arguments = $input->getArguments(); if (empty($arguments)) { $this->showHelp(); exit(1); } $excludes = $input->getOption('exclude')->value; $logPmd = $input->getOption('log-pmd')->value; $minLines = $input->getOption('min-lines')->value; $minTokens = $input->getOption('min-tokens')->value; $names = explode(',', $input->getOption('names')->value); $quiet = $input->getOption('quiet')->value; $verbose = $input->getOption('verbose')->value; array_map('trim', $names); if ($input->getOption('progress')->value !== FALSE) { $output = new \ezcConsoleOutput(); } else { $output = NULL; } $this->printVersionString(); $finder = new FinderFacade($arguments, $excludes, $names); $files = $finder->findFiles(); if (empty($files)) { $this->showError("No files found to scan.\n"); } $strategy = new DefaultStrategy(); $detector = new Detector($strategy, $output); $clones = $detector->copyPasteDetection($files, $minLines, $minTokens); $printer = new ResultPrinter(); $printer->printResult($clones, !$quiet, $verbose); unset($printer); if ($logPmd) { $pmd = new PMD($logPmd); $pmd->processClones($clones); unset($pmd); } if (count($clones) > 0) { exit(1); } }
/** * Main function. Sets up the environment and coordinate the work. * * @return void */ public static function run() { // Set autoload up require_once 'VcsStats/Loader.php'; spl_autoload_register(array('VcsStats_Loader', 'autoload')); require_once 'ezc/Base/base.php'; spl_autoload_register(array('ezcBase', 'autoload')); // Set console output up $output = new ezcConsoleOutput(); $output->formats->version->style = array('bold'); $output->formats->debug->color = 'yellow'; $output->formats->debug->style = array('italic'); $output->formats->error->color = 'red'; self::$consoleOutput = $output; // Set console input up $input = new ezcConsoleInput(); self::$consoleInput = $input; $debugOption = new ezcConsoleOption('d', 'debug'); $debugOption->type = ezcConsoleInput::TYPE_NONE; $input->registerOption($debugOption); $helpOption = new ezcConsoleOption('h', 'help'); $helpOption->type = ezcConsoleInput::TYPE_NONE; $input->registerOption($helpOption); $revisionsOption = new ezcConsoleOption('r', 'revisions'); $revisionsOption->type = ezcConsoleInput::TYPE_STRING; $input->registerOption($revisionsOption); $verboseOption = new ezcConsoleOption('v', 'verbose'); $verboseOption->type = ezcConsoleInput::TYPE_NONE; $input->registerOption($verboseOption); $versionOption = new ezcConsoleOption(null, 'version'); $versionOption->type = ezcConsoleInput::TYPE_NONE; $input->registerOption($versionOption); // Process console input try { $input->process(); } catch (ezcConsoleOptionException $exception) { echo $exception->getMessage() . "\n"; exit(1); } if ($input->getOption('help')->value) { self::displayHelp(); exit(0); } else { if ($input->getOption('version')->value) { self::displayVersion(); exit(0); } } $arguments = $input->getArguments(); if (1 !== count($arguments)) { self::displayError('Path to repository is missing', 'error'); exit(1); } $repositoryPath = $arguments[0]; // Do the actual work self::displayVersion(); try { $options = array('path' => $repositoryPath); $wrapper = new VcsStats_Wrapper_Subversion($options); $cachePath = realpath(dirname(__FILE__) . '/../../tmp'); $cache = new VcsStats_Cache($wrapper, $cachePath); $revisionsRange = self::_extractRevisionsRange($input->getOption('revisions')->value); $cache->updateData($revisionsRange['end']); $analyzer = new VcsStats_Analyzer($cache); $report = $analyzer->getReport($revisionsRange['start'], $revisionsRange['end']); $renderer = new VcsStats_Renderer_Text(); $renderer->render($report); } catch (Exception $exception) { self::displayError($exception->getMessage()); exit(1); } }
/** * Main method. */ public static function main() { $input = new ezcConsoleInput(); $output = new ezcConsoleOutput(); $input->registerOption(new ezcConsoleOption('', 'exclude', ezcConsoleInput::TYPE_STRING, array(), TRUE)); $input->registerOption(new ezcConsoleOption('h', 'help', ezcConsoleInput::TYPE_NONE, NULL, FALSE, '', '', array(), array(), FALSE, FALSE, TRUE)); $input->registerOption(new ezcConsoleOption('', 'log-pmd', ezcConsoleInput::TYPE_STRING)); $input->registerOption(new ezcConsoleOption('', 'min-lines', ezcConsoleInput::TYPE_INT, 5)); $input->registerOption(new ezcConsoleOption('', 'min-tokens', ezcConsoleInput::TYPE_INT, 70)); $input->registerOption(new ezcConsoleOption('', 'save-memory', ezcConsoleInput::TYPE_NONE, NULL, FALSE)); $input->registerOption(new ezcConsoleOption('', 'suffixes', ezcConsoleInput::TYPE_STRING, 'php', FALSE)); $input->registerOption(new ezcConsoleOption('', 'quiet', ezcConsoleInput::TYPE_NONE, NULL, FALSE)); $input->registerOption(new ezcConsoleOption('v', 'version', ezcConsoleInput::TYPE_NONE, NULL, FALSE, '', '', array(), array(), FALSE, FALSE, TRUE)); $input->registerOption(new ezcConsoleOption('', 'verbose', ezcConsoleInput::TYPE_NONE)); try { $input->process(); } catch (ezcConsoleOptionException $e) { print $e->getMessage() . PHP_EOL; exit(1); } if ($input->getOption('help')->value) { self::showHelp(); exit(0); } else { if ($input->getOption('version')->value) { self::printVersionString(); exit(0); } } $arguments = $input->getArguments(); $exclude = $input->getOption('exclude')->value; if (is_array($exclude) && count($exclude) == 1) { array_map('trim', explode(',', array_pop($exclude))); } $logPmd = $input->getOption('log-pmd')->value; $minLines = $input->getOption('min-lines')->value; $minTokens = $input->getOption('min-tokens')->value; $saveMemory = $input->getOption('save-memory')->value; $suffixes = array_map('trim', explode(',', $input->getOption('suffixes')->value)); $quiet = $input->getOption('quiet')->value; if ($input->getOption('verbose')->value !== FALSE) { $verbose = $output; } else { $verbose = NULL; } if (!empty($arguments)) { $facade = new File_Iterator_Facade(); $result = $facade->getFilesAsArray($arguments, $suffixes, array(), $exclude, TRUE); $files = $result['files']; $commonPath = $result['commonPath']; unset($result); } else { self::showHelp(); exit(1); } if (empty($files)) { self::showError('No files found to scan.' . PHP_EOL); } self::printVersionString(); if (!$saveMemory) { $strategy = new PHPCPD_Detector_Strategy_Default(); } else { $strategy = new PHPCPD_Detector_Strategy_SaveMemory(); } $detector = new PHPCPD_Detector($strategy, $verbose); $clones = $detector->copyPasteDetection($files, $minLines, $minTokens); $printer = new PHPCPD_TextUI_ResultPrinter(); $printer->printResult($clones, $commonPath, !$quiet); unset($printer); if ($logPmd) { $pmd = new PHPCPD_Log_XML_PMD($logPmd); $pmd->processClones($clones); unset($pmd); } if (count($clones) > 0) { exit(1); } }
/** * Main method. */ public static function main() { $input = new ezcConsoleInput(); $input->registerOption(new ezcConsoleOption('', 'clover', ezcConsoleInput::TYPE_STRING)); $input->registerOption(new ezcConsoleOption('', 'html', ezcConsoleInput::TYPE_STRING)); $input->registerOption(new ezcConsoleOption('', 'php', ezcConsoleInput::TYPE_STRING)); $input->registerOption(new ezcConsoleOption('', 'text', ezcConsoleInput::TYPE_STRING)); $input->registerOption(new ezcConsoleOption('', 'blacklist', ezcConsoleInput::TYPE_STRING, array(), TRUE)); $input->registerOption(new ezcConsoleOption('', 'whitelist', ezcConsoleInput::TYPE_STRING, array(), TRUE)); $input->registerOption(new ezcConsoleOption('', 'merge', ezcConsoleInput::TYPE_NONE, FALSE)); $input->registerOption(new ezcConsoleOption('', 'add-uncovered', ezcConsoleInput::TYPE_NONE, FALSE)); $input->registerOption(new ezcConsoleOption('', 'process-uncovered', ezcConsoleInput::TYPE_NONE, FALSE)); $input->registerOption(new ezcConsoleOption('h', 'help', ezcConsoleInput::TYPE_NONE, NULL, FALSE, '', '', array(), array(), FALSE, FALSE, TRUE)); $input->registerOption(new ezcConsoleOption('v', 'version', ezcConsoleInput::TYPE_NONE, NULL, FALSE, '', '', array(), array(), FALSE, FALSE, TRUE)); try { $input->process(); } catch (ezcConsoleOptionException $e) { print $e->getMessage() . "\n"; exit(1); } if ($input->getOption('help')->value) { self::showHelp(); exit(0); } else { if ($input->getOption('version')->value) { self::printVersionString(); exit(0); } } $arguments = $input->getArguments(); $clover = $input->getOption('clover')->value; $html = $input->getOption('html')->value; $php = $input->getOption('php')->value; $text = $input->getOption('text')->value; $blacklist = $input->getOption('blacklist')->value; $whitelist = $input->getOption('whitelist')->value; $addUncovered = $input->getOption('add-uncovered')->value; $processUncovered = $input->getOption('process-uncovered')->value; $merge = $input->getOption('merge')->value; if (count($arguments) == 1) { self::printVersionString(); $coverage = new PHP_CodeCoverage(); $filter = $coverage->filter(); if (empty($whitelist)) { $c = new ReflectionClass('ezcBase'); $filter->addDirectoryToBlacklist(dirname($c->getFileName())); $c = new ReflectionClass('ezcConsoleInput'); $filter->addDirectoryToBlacklist(dirname($c->getFileName())); foreach ($blacklist as $item) { if (is_dir($item)) { $filter->addDirectoryToBlacklist($item); } else { if (is_file($item)) { $filter->addFileToBlacklist($item); } } } } else { $coverage->setAddUncoveredFilesFromWhitelist($addUncovered); $coverage->setProcessUncoveredFilesFromWhitelist($processUncovered); foreach ($whitelist as $item) { if (is_dir($item)) { $filter->addDirectoryToWhitelist($item); } else { if (is_file($item)) { $filter->addFileToWhitelist($item); } } } } if (!$merge) { $coverage->start('phpcov'); require $arguments[0]; $coverage->stop(); } else { $finder = new Symfony\Component\Finder\Finder(); $finder->in($arguments[0])->name('*.cov'); foreach ($finder as $file) { $coverage->merge(unserialize(file_get_contents($file->getRealpath()))); } } if ($clover) { $writer = new PHP_CodeCoverage_Report_Clover(); $writer->process($coverage, $clover); } if ($html) { $writer = new PHP_CodeCoverage_Report_HTML(); $writer->process($coverage, $html); } if ($php) { $writer = new PHP_CodeCoverage_Report_PHP(); $writer->process($coverage, $php); } if ($text) { $writer = new PHP_CodeCoverage_Report_Text(); $writer->process($coverage, $text); } } else { self::showHelp(); exit(1); } }
/** * @param \ezcConsoleInput $input * * @return \TheSeer\Autoload\Config */ private function configure(\ezcConsoleInput $input) { $config = new Config($input->getArguments()); if ($input->getOption('quiet')->value) { $config->setQuietMode(TRUE); } if ($input->getOption('compat')->value) { $config->setCompatMode(TRUE); } if ($input->getOption('tolerant')->value) { $config->setTolerantMode(TRUE); } if ($output = $input->getOption('output')->value) { $config->setOutputFile($output); } if ($input->getOption('phar')->value) { $compression = \Phar::NONE; if ($input->getOption('bzip2')->value === TRUE) { $compression = \Phar::BZ2; } else { if ($input->getOption('gzip')->value === TRUE) { $compression = \Phar::GZ; } } $config->enablePharMode($compression, $input->getOption('all')->value, $input->getOption('key')->value, $input->getOption('alias')->value); $config->setVariable('PHAR', $input->getOption('alias')->value ? $input->getOption('alias')->value : basename($output)); if ($hashAlgorithm = $input->getOption('hash')->value) { $config->setPharHashAlgorithm($hashAlgorithm); } } if ($input->getOption('cache')->value) { $config->setCacheFile($input->getOption('cache')->value); } if ($basedir = $input->getOption('basedir')->value) { $config->setBaseDirectory($basedir); } $include = $input->getOption('include')->value; if (!is_array($include)) { $include = array($include); } $config->setInclude($include); if ($exclude = $input->getOption('exclude')->value) { if (!is_array($exclude)) { $exclude = array($exclude); } $config->setExclude($exclude); } $whitelist = $input->getOption('whitelist')->value; if (!is_array($whitelist)) { $whitelist = array($whitelist); } $config->setWhitelist($whitelist); if ($blacklist = $input->getOption('blacklist')->value) { if (!is_array($blacklist)) { $blacklist = array($blacklist); } $config->setBlacklist($blacklist); } if ($input->getOption('static')->value) { $config->setStaticMode(TRUE); } if ($input->getOption('once')->value) { $config->setOnceMode(TRUE); } if ($input->getOption('follow')->value) { $config->setFollowSymlinks(TRUE); } if ($input->getOption('prepend')->value) { $config->enablePrepend(); } if ($input->getOption('no-exception')->value) { $config->disableExceptions(); } $indent = $input->getOption('indent')->value; if ($indent !== FALSE) { $config->setIndent($indent); } if ($template = $input->getOption('template')->value) { $config->setTemplate($template); } if ($linebreak = $input->getOption('linebreak')->value) { $config->setLinebreak($linebreak); } if ($input->getOption('nolower')->value) { $config->setLowercaseMode(FALSE); } if ($variables = $input->getOption('var')->value) { foreach ($variables as $var) { if (strpos($var, '=') === FALSE) { throw new \RuntimeException("Variable defintion '{$var}' is invalid and cannot be processed."); } list($name, $value) = explode('=', $var, 2); $config->setVariable($name, $value); } } if ($input->getOption('paranoid')->value || !$input->getOption('trusting')->value) { $config->setTrusting(FALSE); } return $config; }
/** * Main function. Sets up the environment and coordinate the work. * * @return void */ public static function run() { // Set autoload up require_once 'PHP/ConfigReport/Loader.php'; spl_autoload_register(array('PHP_ConfigReport_Loader', 'autoload')); require_once 'ezc/Base/base.php'; spl_autoload_register(array('ezcBase', 'autoload')); // Set console output up $output = new ezcConsoleOutput(); $output->formats->version->style = array('bold'); $output->formats->debug->color = 'yellow'; $output->formats->debug->style = array('italic'); $output->formats->error->color = 'red'; self::$_consoleOutput = $output; // Set console input up $input = new ezcConsoleInput(); self::$_consoleInput = $input; $debugOption = new ezcConsoleOption('d', 'debug'); $debugOption->type = ezcConsoleInput::TYPE_NONE; $input->registerOption($debugOption); $environmentOption = new ezcConsoleOption('e', 'environment'); $environmentOption->type = ezcConsoleInput::TYPE_STRING; $environmentOption->default = 'production'; $input->registerOption($environmentOption); $helpOption = new ezcConsoleOption('h', 'help'); $helpOption->type = ezcConsoleInput::TYPE_NONE; $input->registerOption($helpOption); $phpDirectiveOption = new ezcConsoleOption('p', 'php'); $phpDirectiveOption->type = ezcConsoleInput::TYPE_STRING; $phpDirectiveOption->multiple = true; $input->registerOption($phpDirectiveOption); $phpVersionOption = new ezcConsoleOption(null, 'php-version'); $phpVersionOption->type = ezcConsoleInput::TYPE_STRING; $input->registerOption($phpVersionOption); $verboseOption = new ezcConsoleOption('v', 'verbose'); $verboseOption->type = ezcConsoleInput::TYPE_NONE; $input->registerOption($verboseOption); $loadedExtensionsOption = new ezcConsoleOption('x', 'extensions'); $loadedExtensionsOption->type = ezcConsoleInput::TYPE_STRING; $input->registerOption($loadedExtensionsOption); $widthOption = new ezcConsoleOption(null, 'width'); $widthOption->type = ezcConsoleInput::TYPE_INT; $input->registerOption($widthOption); $versionOption = new ezcConsoleOption(null, 'version'); $versionOption->type = ezcConsoleInput::TYPE_NONE; $input->registerOption($versionOption); // Process console input try { $input->process(); } catch (ezcConsoleOptionException $exception) { echo $exception->getMessage() . "\n"; exit(1); } if ($input->getOption('help')->value) { self::displayHelp(); exit(0); } else { if ($input->getOption('version')->value) { self::displayVersion(); exit(0); } } self::displayVersion(); if (false !== $input->getOption('php')->value) { foreach ($input->getOption('php')->value as $directive) { $position = strpos($directive, '='); if (false === $position) { throw new InvalidArgumentException("'{$directive}' is not a valid PHP configuration " . "directive"); } $name = substr($directive, 0, $position); $value = substr($directive, $position + 1); if (false === ini_set($name, $value)) { self::displayError("PHP directive {$name} could not be defined to {$value}"); } } unset($name, $value); } // Do the actual work try { $arguments = $input->getArguments(); $path = !empty($arguments[0]) ? $arguments[0] : null; $config = new PHP_ConfigReport_Config($path); if (false === $input->getOption('environment')->value) { $environment = null; } else { $environment = $input->getOption('environment')->value; } if (false === $input->getOption('extensions')->value) { $loadedExtensions = get_loaded_extensions(true); } else { $loadedExtensions = $input->getOption('extensions')->value; } if (false === $input->getOption('php-version')->value) { $phpVersion = PHP_VERSION; } else { $phpVersion = $input->getOption('php-version')->value; } $analyzer = new PHP_ConfigReport_Analyzer($config, $environment, $phpVersion, $loadedExtensions); $report = $analyzer->getReport(); if (false !== $input->getOption('width')->value) { $reportWidth = $input->getOption('width')->value; } else { $reportWidth = null; } $renderer = new PHP_ConfigReport_Renderer_Text($reportWidth); $renderer->render($report); } catch (Exception $exception) { self::displayError($exception->getMessage()); exit(1); } }
/** * Main method. */ public function main() { $input = new ezcConsoleInput(); $input->registerOption(new ezcConsoleOption('', 'eliminate-dead-code', ezcConsoleInput::TYPE_NONE)); $input->registerOption(new ezcConsoleOption('', 'exclude', ezcConsoleInput::TYPE_STRING, array(), TRUE)); $input->registerOption(new ezcConsoleOption('', 'format', ezcConsoleInput::TYPE_STRING, 'dot', FALSE)); $input->registerOption(new ezcConsoleOption('', 'graph', ezcConsoleInput::TYPE_STRING)); $input->registerOption(new ezcConsoleOption('h', 'help', ezcConsoleInput::TYPE_NONE, NULL, FALSE, '', '', array(), array(), FALSE, FALSE, TRUE)); $input->registerOption(new ezcConsoleOption('', 'log-pmd', ezcConsoleInput::TYPE_STRING)); $input->registerOption(new ezcConsoleOption('', 'rule', ezcConsoleInput::TYPE_STRING, array(), TRUE)); $input->registerOption(new ezcConsoleOption('', 'suffixes', ezcConsoleInput::TYPE_STRING, 'php', FALSE)); $input->registerOption(new ezcConsoleOption('v', 'version', ezcConsoleInput::TYPE_NONE, NULL, FALSE, '', '', array(), array(), FALSE, FALSE, TRUE)); try { $input->process(); } catch (ezcConsoleOptionException $e) { print $e->getMessage() . "\n"; exit(1); } if ($input->getOption('help')->value) { $this->showHelp(); exit(0); } else { if ($input->getOption('version')->value) { $this->printVersionString(); exit(0); } } $arguments = $input->getArguments(); if (empty($arguments)) { $this->showHelp(); exit(1); } $eliminateDeadCode = $input->getOption('eliminate-dead-code')->value; $excludes = $input->getOption('exclude')->value; $format = $input->getOption('format')->value; $graph = $input->getOption('graph')->value; $logPmd = $input->getOption('log-pmd')->value; $_rules = $input->getOption('rule')->value; $suffixes = explode(',', $input->getOption('suffixes')->value); array_map('trim', $suffixes); $rules = array(); foreach ($_rules as $rule) { $ruleOptions = ''; if (strpos($rule, ':') !== FALSE) { list($rule, $ruleOptions) = explode(':', $rule); } switch ($rule) { case 'DirectOutput': $rules[] = new Bytekit_Scanner_Rule_DirectOutput(); break; case 'DisallowedOpcodes': $disallowedOpcodes = explode(',', $ruleOptions); array_map('trim', $disallowedOpcodes); $rules[] = new Bytekit_Scanner_Rule_DisallowedOpcodes($disallowedOpcodes); break; case 'Output': $rules[] = new Bytekit_Scanner_Rule_Output(); break; case 'ZendView': $rules[] = new Bytekit_Scanner_Rule_ZendView(); break; } } $files = $this->findFiles($arguments, $excludes, $suffixes); if (empty($files)) { $this->showError("No files found to scan.\n"); } $this->printVersionString(); if (!empty($rules)) { $scanner = new Bytekit_Scanner($rules); $result = $scanner->scan($files); $formatter = new Bytekit_TextUI_ResultFormatter_Scanner_Text(); print $formatter->formatResult($result); if ($logPmd) { $formatter = new Bytekit_TextUI_ResultFormatter_Scanner_XML(); file_put_contents($logPmd, $formatter->formatResult($result)); } if (!empty($result)) { exit(1); } exit(0); } if (count($files) == 1) { $disassembler = new Bytekit_Disassembler($files[0]); if ($graph) { $result = $disassembler->disassemble(FALSE, $eliminateDeadCode); $formatter = new Bytekit_TextUI_ResultFormatter_Disassembler_Graph(); $formatter->formatResult($result, $graph, $format); } else { $result = $disassembler->disassemble(TRUE, $eliminateDeadCode); $formatter = new Bytekit_TextUI_ResultFormatter_Disassembler_Text(); print $formatter->formatResult($result); } exit(0); } }
protected function buildPhar(\Iterator $scanner, \ezcConsoleInput $input) { $basedir = $input->getOption('basedir')->value; $phar = new \Phar($input->getOption('output')->value, 0, basename($input->getOption('output')->value)); $phar->startBuffering(); if ($basedir) { $phar->buildFromIterator($scanner, $basedir); } else { $args = $input->getArguments(); $phar->buildFromIterator($scanner, $args[0]); } return $phar; }
<?php require_once 'tutorial_autoload.php'; $input = new ezcConsoleInput(); $helpOption = $input->registerOption(new ezcConsoleOption('h', 'help')); $inputOption = $input->registerOption(new ezcConsoleOption('i', 'input', ezcConsoleInput::TYPE_STRING)); $outputOption = $input->registerOption(new ezcConsoleOption('o', 'output')); $outputOption->type = ezcConsoleInput::TYPE_STRING; $inputOption->addDependency(new ezcConsoleOptionRule($outputOption)); $outputOption->addDependency(new ezcConsoleOptionRule($inputOption)); try { $input->process(); } catch (ezcConsoleOptionException $e) { die($e->getMessage()); } if ($helpOption->value === true) { echo $input->getSynopsis() . "\n"; foreach ($input->getOptions() as $option) { echo "-{$option->short}/{$option->long}: {$option->shorthelp}\n"; } } elseif ($outputOption->value !== false) { echo "Input: {$inputOption->value}, Output: {$outputOption->value}\n"; echo "Arguments: " . implode(", ", $input->getArguments()) . "\n"; }