/**
  * 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);
 }
Beispiel #3
0
 /**
  * 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);
 }
Beispiel #4
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);
     }
 }
Beispiel #5
0
 /**
  * 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);
     }
 }
Beispiel #6
0
 /**
  * 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);
     }
 }
Beispiel #7
0
 /**
  * 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);
     }
 }
Beispiel #8
0
 /**
  * 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);
     }
 }
Beispiel #9
0
 /**
  * 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);
     }
 }
Beispiel #10
0
 /**
  * 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);
     }
 }
Beispiel #11
0
 /**
  * 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);
     }
 }
Beispiel #12
0
 /**
  * @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;
 }
Beispiel #13
0
 /**
  * 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";
}