/** * 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'); } } }
/** * Creates a test fixture of the {@link PHP_Depend_TextUI_Runner} class. * * @return PHP_Depend_TextUI_Runner * @since 0.10.0 */ protected function createTextUiRunnerFixture() { $fixture = new PHP_Depend_TextUI_Runner(); $fixture->setConfiguration($this->createConfigurationFixture()); return $fixture; }
/** * Parses the cli arguments. * * @return boolean */ protected function handleArguments() { if (!isset($_SERVER['argv'])) { if (false === (bool) ini_get('register_argc_argv')) { // @codeCoverageIgnoreStart echo 'Please enable register_argc_argv in your php.ini.'; } else { // @codeCoverageIgnoreEnd echo 'Unknown error, no $argv array available.'; } echo PHP_EOL, PHP_EOL; return false; } $argv = $_SERVER['argv']; // Remove the pdepend command line file array_shift($argv); if (count($argv) === 0) { return false; } // Last argument must be a list of source directories if (strpos(end($argv), '--') !== 0) { $this->_runner->setSourceArguments(explode(',', array_pop($argv))); } for ($i = 0, $c = count($argv); $i < $c; ++$i) { // Is it an ini_set option? if ($argv[$i] === '-d' && isset($argv[$i + 1])) { if (strpos($argv[++$i], '=') === false) { ini_set($argv[$i], 'on'); } else { list($key, $value) = explode('=', $argv[$i]); ini_set($key, $value); } } else { if (strpos($argv[$i], '=') === false) { $this->_options[$argv[$i]] = true; } else { list($key, $value) = explode('=', $argv[$i]); $this->_options[$key] = $value; } } } // Check for suffix option if (isset($this->_options['--suffix'])) { // Get file extensions $extensions = explode(',', $this->_options['--suffix']); // Set allowed file extensions $this->_runner->setFileExtensions($extensions); unset($this->_options['--suffix']); } // Check for ignore option if (isset($this->_options['--ignore'])) { // Get exclude directories $directories = explode(',', $this->_options['--ignore']); // Set exclude directories $this->_runner->setExcludeDirectories($directories); unset($this->_options['--ignore']); } // Check for exclude package option if (isset($this->_options['--exclude'])) { // Get exclude directories $packages = explode(',', $this->_options['--exclude']); // Set exclude packages $this->_runner->setExcludePackages($packages); unset($this->_options['--exclude']); } // Check for the bad documentation option if (isset($this->_options['--bad-documentation'])) { echo "Option --bad-documentation is ambiguous.", PHP_EOL; unset($this->_options['--bad-documentation']); } $configurationFactory = new PHP_Depend_Util_Configuration_Factory(); // Check for configuration option if (isset($this->_options['--configuration'])) { // Get config file $configFile = $this->_options['--configuration']; unset($this->_options['--configuration']); $configuration = $configurationFactory->create($configFile); } else { $configuration = $configurationFactory->createDefault(); } // Store in config registry PHP_Depend_Util_ConfigurationInstance::set($configuration); $this->_runner->setConfiguration($configuration); if (isset($this->_options['--debug'])) { unset($this->_options['--debug']); PHP_Depend_Util_Log::setSeverity(PHP_Depend_Util_Log::DEBUG); } return true; }
/** * @return PHP_Depend_TextUI_Runner */ private function createLegacyRunner() { $runner = new PHP_Depend_TextUI_Runner(); $runner->addProcessListener(new PHP_Depend_TextUI_ResultPrinter()); if ($this->debug) { require_once 'PHP/Depend/Util/Log.php'; // Enable debug logging PHP_Depend_Util_Log::setSeverity(PHP_Depend_Util_Log::DEBUG); } $configuration = $this->getConfiguration(); if ($configuration === null) { $configurationFactory = new PHP_Depend_Util_Configuration_Factory(); $configuration = $configurationFactory->createDefault(); } PHP_Depend_Util_ConfigurationInstance::set($configuration); $runner->setConfiguration($configuration); return $runner; }
/** * Tests that the {@link PHP_Depend_TextUI_Runner::hasErrors()} method will * return <b>true</b> when a parsing error occured. * * @return void * @covers PHP_Depend_TextUI_Runner */ public function testRunnerReturnsTrueWhenAnErrorOccuredDuringTheParsingProcess() { $runner = new PHP_Depend_TextUI_Runner(); $runner->setConfiguration($this->createConfigurationFixture()); $runner->addLogger('dummy-logger', self::createRunResourceURI('pdepend.log')); $runner->setSourceArguments(array(self::createCodeResourceUriForTest())); $runner->run(); self::assertTrue($runner->hasParseErrors()); }