/** * Main execute function for PHP_CodeBrowser. * * Following steps are resolved: * 1. Clean-up output directory * 2. Merge xml log files * 3. Generate cbXML file via errorlist from plugins * 4. Save the cbErrorList as XML file * 5. Generate HTML output from cbXML * 6. Copy ressources (css, js, images) from template directory to output * * @return void */ public function run() { // clear and create output directory if (is_dir($this->_htmlOutputDir)) { $this->_ioHelper->deleteDirectory($this->_htmlOutputDir); } else { if (is_file($this->_htmlOutputDir)) { $this->_ioHelper->deleteFile($this->_htmlOutputDir); } } $this->_ioHelper->createDirectory($this->_htmlOutputDir); // init needed classes $cbViewReview = new CbViewReview(PHPCB_TEMPLATE_DIR, $this->_htmlOutputDir, $this->_ioHelper, $this->_phpSuffixes); $sourceHandler = new CbSourceHandler($this->_debugLog); if (isset($this->_logDir)) { $cbIssueXml = new CbIssueXml(); // merge xml files $cbIssueXml->addDirectory($this->_logDir); // conversion of XML file cc to cb format foreach ($this->_registeredPlugins as $className) { if (array_key_exists($className, $this->_pluginOptions)) { $plugin = new $className($cbIssueXml, $this->_pluginOptions[$className]); } else { $plugin = new $className($cbIssueXml); } $sourceHandler->addPlugin($plugin); } } if (isset($this->_projectSource)) { foreach ($this->_projectSource as $source) { if (is_dir($source)) { $factory = new File_Iterator_Factory(); $suffixes = array_merge($this->_phpSuffixes, array('php', 'js', 'css', 'html')); $sourceHandler->addSourceFiles($factory->getFileIterator($source, $suffixes)); } else { $sourceHandler->addSourceFile($source); } } } array_walk($this->_excludeExpressions, array($sourceHandler, 'excludeMatchingPCRE')); array_walk($this->_excludePatterns, array($sourceHandler, 'excludeMatchingPattern')); $files = $sourceHandler->getFiles(); if (!$files) { $cbViewReview->copyNoErrorsIndex(); } else { // Get the path prefix all files have in common $commonPathPrefix = $sourceHandler->getCommonPathPrefix(); $error_reporting = ini_get('error_reporting'); // Disable E_Strict, Text_Highlighter might throw up ini_set('error_reporting', $error_reporting & ~E_STRICT); foreach ($files as $file) { $cbViewReview->generate($file->getIssues(), $file->name(), $commonPathPrefix, $this->_excludeOK); } ini_set('error_reporting', $error_reporting); // Copy needed ressources (eg js libraries) to output directory $cbViewReview->copyRessourceFolders(); $cbViewReview->generateIndex($files, $this->_excludeOK); } }
/** * Main execute function for PHP_CodeBrowser. * * Following steps are resolved: * 1. Clean-up output directory * 2. Merge xml log files * 3. Generate cbXML file via errorlist from plugins * 4. Save the cbErrorList as XML file * 5. Generate HTML output from cbXML * 6. Copy ressources (css, js, images) from template directory to output * * @return void */ public function run() { // clear and create output directory if (is_dir($this->_htmlOutputDir)) { $this->_ioHelper->deleteDirectory($this->_htmlOutputDir); } else { if (is_file($this->_htmlOutputDir)) { $this->_ioHelper->deleteFile($this->_htmlOutputDir); } } $this->_ioHelper->createDirectory($this->_htmlOutputDir); // init needed classes $cbViewReview = new CbViewReview(PHPCB_TEMPLATE_DIR, $this->_htmlOutputDir, $this->_ioHelper); $sourceHandler = new CbSourceHandler(); if (isset($this->_logDir)) { $cbIssueXml = new CbIssueXml(); // merge xml files $cbIssueXml->addDirectory($this->_logDir); // conversion of XML file cc to cb format foreach ($this->_registeredPlugins as $className) { $sourceHandler->addPlugin(new $className($cbIssueXml)); } } if (isset($this->_projectSource)) { foreach ($this->_projectSource as $source) { if (is_dir($source)) { $sourceHandler->addSourceFiles(File_Iterator_Factory::getFileIterator($source, array('php', 'js', 'css', 'html'))); } else { $sourceHandler->addSourceFile($source); } } } array_walk($this->_excludeExpressions, array($sourceHandler, 'excludeMatchingPCRE')); array_walk($this->_excludePatterns, array($sourceHandler, 'excludeMatchingPattern')); $files = $sourceHandler->getFiles(); if (!$files) { $cbViewReview->copyNoErrorsIndex(); } else { // Get the path prefix all files have in common $commonPathPrefix = $sourceHandler->getCommonPathPrefix(); foreach ($files as $file) { $cbViewReview->generate($file->getIssues(), $file->name(), $commonPathPrefix); } // Copy needed ressources (eg js libraries) to output directory $cbViewReview->copyRessourceFolders(); $cbViewReview->generateIndex($files); } }