Пример #1
0
 /**
  * Performs the main cli process and returns the exit code.
  *
  * @return integer
  */
 public function run()
 {
     // Create a new text ui runner
     $this->_runner = new PHP_Depend_TextUI_Runner();
     $this->_runner->addProcessListener(new PHP_Depend_TextUI_ResultPrinter());
     if ($this->handleArguments() === false) {
         $this->printHelp();
         return self::CLI_ERROR;
     }
     if (isset($this->_options['--help'])) {
         $this->printHelp();
         return PHP_Depend_TextUI_Runner::SUCCESS_EXIT;
     }
     if (isset($this->_options['--usage'])) {
         $this->printUsage();
         return PHP_Depend_TextUI_Runner::SUCCESS_EXIT;
     }
     if (isset($this->_options['--version'])) {
         $this->printVersion();
         return PHP_Depend_TextUI_Runner::SUCCESS_EXIT;
     }
     // Get a copy of all options
     $options = $this->_options;
     // Get an array with all available log options
     $logOptions = $this->collectLogOptions();
     // Get an array with all available analyzer options
     $analyzerOptions = $this->collectAnalyzerOptions();
     foreach ($options as $option => $value) {
         if (isset($logOptions[$option])) {
             // Reduce recieved option list
             unset($options[$option]);
             // Register logger
             $this->_runner->addLogger(substr($option, 2), $value);
         } else {
             if (isset($analyzerOptions[$option])) {
                 // Reduce recieved option list
                 unset($options[$option]);
                 if (isset($analyzerOptions[$option]['value']) && is_bool($value)) {
                     echo 'Option ', $option, ' requires a value.', PHP_EOL;
                     return self::INPUT_ERROR;
                 } else {
                     if ($analyzerOptions[$option]['value'] === 'file' && file_exists($value) === false) {
                         echo 'Specifie file ', $option, '=', $value, ' not exists.', PHP_EOL;
                         return self::INPUT_ERROR;
                     } else {
                         if ($analyzerOptions[$option]['value'] === '*') {
                             $value = array_map('trim', explode(',', $value));
                         }
                     }
                 }
                 $this->_runner->addOption(substr($option, 2), $value);
             }
         }
     }
     if (isset($options['--without-annotations'])) {
         // Disable annotation parsing
         $this->_runner->setWithoutAnnotations();
         // Remove option
         unset($options['--without-annotations']);
     }
     if (isset($options['--optimization'])) {
         // Check optimization strategy
         if (!isset($this->_optimizations[$options['--optimization']])) {
             echo 'Invalid optimization ', $options['--optimization'], ' given.', PHP_EOL;
             return self::INPUT_ERROR;
         }
         // Set optimization strategy
         $this->_runner->setOptimization($options['--optimization']);
         // Remove option
         unset($options['--optimization']);
     }
     if (isset($options['--notify-me'])) {
         // Import the class source
         include_once 'PHP/Depend/DbusUI/ResultPrinter.php';
         // Load the dbus result printer.
         $this->_runner->addProcessListener(new PHP_Depend_DbusUI_ResultPrinter());
         // Remove that option
         unset($options['--notify-me']);
     }
     if (count($options) > 0) {
         $this->printHelp();
         echo "Unknown option '", key($options), "' given.", PHP_EOL;
         return self::CLI_ERROR;
     }
     try {
         // Output current pdepend version and author
         $this->printVersion();
         $startTime = time();
         $result = $this->_runner->run();
         if ($this->_runner->hasParseErrors() === true) {
             echo PHP_EOL, 'Following errors occured:', PHP_EOL;
             foreach ($this->_runner->getParseErrors() as $error) {
                 echo $error, PHP_EOL;
             }
             echo PHP_EOL;
         }
         echo PHP_EOL, 'Time: ', date('i:s', time() - $startTime);
         if (function_exists('memory_get_peak_usage')) {
             $memory = memory_get_peak_usage(true) / (1024 * 1024);
             printf('; Memory: %4.2fMb', $memory);
         }
         echo PHP_EOL;
         return $result;
     } catch (RuntimeException $e) {
         // Print error message
         echo $e->getMessage(), PHP_EOL;
         // Return exit code
         return $e->getCode();
     }
 }
Пример #2
0
 /**
  * Executes PHP_Depend_TextUI_Runner against PhingFile or a FileSet
  *
  * @return void
  * @throws BuildException
  */
 public function main()
 {
     $autoload = new PHP_Depend_Autoload();
     $autoload->register();
     if (!isset($this->_file) and count($this->_filesets) == 0) {
         throw new BuildException("Missing either a nested fileset or attribute 'file' set");
     }
     if (count($this->_loggers) == 0) {
         throw new BuildException("Missing nested 'logger' element");
     }
     $this->validateLoggers();
     $this->validateAnalyzers();
     $filesToParse = array();
     if ($this->_file instanceof PhingFile) {
         $filesToParse[] = $this->_file->__toString();
     } else {
         // append any files in filesets
         foreach ($this->_filesets as $fs) {
             $files = $fs->getDirectoryScanner($this->project)->getIncludedFiles();
             foreach ($files as $filename) {
                 $f = new PhingFile($fs->getDir($this->project), $filename);
                 $filesToParse[] = $f->getAbsolutePath();
             }
         }
     }
     $this->_runner = new PHP_Depend_TextUI_Runner();
     $this->_runner->addProcessListener(new PHP_Depend_TextUI_ResultPrinter());
     $configurationFactory = new PHP_Depend_Util_Configuration_Factory();
     $configuration = $configurationFactory->createDefault();
     $this->_runner->setConfiguration($configuration);
     $this->_runner->setSourceArguments($filesToParse);
     foreach ($this->_loggers as $logger) {
         // Register logger
         $this->_runner->addLogger($logger->getType(), $logger->getOutfile()->__toString());
     }
     foreach ($this->_analyzers as $analyzer) {
         // Register additional analyzer
         $this->_runner->addOption($analyzer->getType(), $analyzer->getValue());
     }
     // Disable annotation parsing
     if ($this->_withoutAnnotations) {
         $this->_runner->setWithoutAnnotations();
     }
     // Enable bad documentation support
     if ($this->_supportBadDocumentation) {
         $this->_runner->setSupportBadDocumentation();
     }
     // Check for suffix
     if (count($this->_allowedFileExtensions) > 0) {
         $this->_runner->setFileExtensions($this->_allowedFileExtensions);
     }
     // Check for ignore directories
     if (count($this->_excludeDirectories) > 0) {
         $this->_runner->setExcludeDirectories($this->_excludeDirectories);
     }
     // Check for exclude packages
     if (count($this->_excludePackages) > 0) {
         $this->_runner->setExcludePackages($this->_excludePackages);
     }
     // Check for configuration option
     if ($this->_configFile instanceof PhingFile) {
         if (file_exists($this->_configFile->__toString()) === false) {
             throw new BuildException('The configuration file "' . $this->_configFile->__toString() . '" doesn\'t exist.');
         }
         // Load configuration file
         $config = new PHP_Depend_Util_Configuration($this->_configFile->__toString(), null, true);
         // Store in config registry
         PHP_Depend_Util_ConfigurationInstance::set($config);
     }
     if ($this->_debug) {
         require_once 'PHP/Depend/Util/Log.php';
         // Enable debug logging
         PHP_Depend_Util_Log::setSeverity(PHP_Depend_Util_Log::DEBUG);
     }
     $this->_runner->run();
     if ($this->_runner->hasParseErrors() === true) {
         $this->log('Following errors occurred:');
         foreach ($this->_runner->getParseErrors() as $error) {
             $this->log($error);
         }
         if ($this->_haltonerror === true) {
             throw new BuildException('Errors occurred during parse process');
         }
     }
 }
Пример #3
0
 /**
  * Performs the main cli process and returns the exit code.
  *
  * @return integer
  */
 public function run()
 {
     // Create a new text ui runner
     $this->runner = new PHP_Depend_TextUI_Runner();
     $this->runner->addProcessListener(new PHP_Depend_TextUI_ResultPrinter());
     try {
         if ($this->handleArguments() === false) {
             $this->printHelp();
             return self::CLI_ERROR;
         }
     } catch (Exception $e) {
         echo $e->getMessage(), PHP_EOL, PHP_EOL;
         $this->printHelp();
         return self::CLI_ERROR;
     }
     if (isset($this->options['--help'])) {
         $this->printHelp();
         return PHP_Depend_TextUI_Runner::SUCCESS_EXIT;
     }
     if (isset($this->options['--usage'])) {
         $this->printUsage();
         return PHP_Depend_TextUI_Runner::SUCCESS_EXIT;
     }
     if (isset($this->options['--version'])) {
         $this->printVersion();
         return PHP_Depend_TextUI_Runner::SUCCESS_EXIT;
     }
     // Get a copy of all options
     $options = $this->options;
     // Get an array with all available log options
     $logOptions = $this->collectLogOptions();
     // Get an array with all available analyzer options
     $analyzerOptions = $this->collectAnalyzerOptions();
     foreach ($options as $option => $value) {
         if (isset($logOptions[$option])) {
             // Reduce recieved option list
             unset($options[$option]);
             // Register logger
             $this->runner->addLogger(substr($option, 2), $value);
         } else {
             if (isset($analyzerOptions[$option])) {
                 // Reduce recieved option list
                 unset($options[$option]);
                 if (isset($analyzerOptions[$option]['value']) && is_bool($value)) {
                     echo 'Option ', $option, ' requires a value.', PHP_EOL;
                     return self::INPUT_ERROR;
                 } else {
                     if ($analyzerOptions[$option]['value'] === 'file' && file_exists($value) === false) {
                         echo 'Specified file ', $option, '=', $value, ' not exists.', PHP_EOL;
                         return self::INPUT_ERROR;
                     } else {
                         if ($analyzerOptions[$option]['value'] === '*') {
                             $value = array_map('trim', explode(',', $value));
                         }
                     }
                 }
                 $this->runner->addOption(substr($option, 2), $value);
             }
         }
     }
     if (isset($options['--without-annotations'])) {
         // Disable annotation parsing
         $this->runner->setWithoutAnnotations();
         // Remove option
         unset($options['--without-annotations']);
     }
     if (isset($options['--optimization'])) {
         // This option is deprecated.
         echo 'Option --optimization is ambiguous.', PHP_EOL;
         // Remove option
         unset($options['--optimization']);
     }
     if (isset($options['--notify-me'])) {
         $this->runner->addProcessListener(new PHP_Depend_DbusUI_ResultPrinter());
         unset($options['--notify-me']);
     }
     if (count($options) > 0) {
         $this->printHelp();
         echo "Unknown option '", key($options), "' given.", PHP_EOL;
         return self::CLI_ERROR;
     }
     try {
         // Output current pdepend version and author
         $this->printVersion();
         $startTime = time();
         $result = $this->runner->run();
         if ($this->runner->hasParseErrors() === true) {
             $errors = $this->runner->getParseErrors();
             printf('%sThe following error%s occured:%s', PHP_EOL, count($errors) > 1 ? 's' : '', PHP_EOL);
             foreach ($errors as $error) {
                 echo $error, PHP_EOL;
             }
             echo PHP_EOL;
         }
         echo PHP_EOL, 'Time: ', date('i:s', time() - $startTime);
         if (function_exists('memory_get_peak_usage')) {
             $memory = memory_get_peak_usage(true) / (1024 * 1024);
             printf('; Memory: %4.2fMb', $memory);
         }
         echo PHP_EOL;
         return $result;
     } catch (RuntimeException $e) {
         echo PHP_EOL, PHP_EOL, 'Critical error: ', PHP_EOL, '=============== ', PHP_EOL, $e->getMessage(), PHP_EOL;
         return $e->getCode();
     }
 }