/** * Processes a list of clones. * * @param PHPCPD_CloneMap $clones * @param Project $project * @param boolean $useFile * @param PhingFile|null $outfile */ public function processClones(PHPCPD_CloneMap $clones, Project $project, $useFile = false, $outFile = null) { $logger = new PHPCPD_TextUI_ResultPrinter(); // default format goes to logs, no buffering ob_start(); $logger->printResult($clones, $project->getBaseDir(), true); $output = ob_get_contents(); ob_end_clean(); if (!$useFile || empty($outFile)) { echo $output; } else { file_put_contents($outFile->getPath(), $output); } }
/** * Processes a list of clones. * * @param PHPCPD_CloneMap $clones */ public function processClones(PHPCPD_CloneMap $clones, PhingFile $outfile, Project $project) { $logger = new PHPCPD_TextUI_ResultPrinter(); // default format goes to logs, no buffering ob_start(); $logger->printResult($clones, $project->getBaseDir()); $output = ob_get_contents(); ob_end_clean(); if (!$this->usefile) { echo $output; } else { $outputFile = $outfile->getPath(); file_put_contents($outputFile, $output); } }
/** * Processes a list of clones. * * @param CodeCloneMap $clones * @param Project $project * @param boolean $useFile * @param PhingFile|null $outFile */ public function processClones($clones, Project $project, $useFile = false, $outFile = null) { if (get_class($clones) == 'SebastianBergmann\\PHPCPD\\CodeCloneMap') { if (class_exists('SebastianBergmann\\PHPCPD\\Log\\Text')) { $this->processClonesNew($clones, $useFile, $outFile); return; } $logger = new \SebastianBergmann\PHPCPD\TextUI\ResultPrinter(); } else { $logger = new PHPCPD_TextUI_ResultPrinter(); } // default format goes to logs, no buffering ob_start(); $logger->printResult($clones, $project->getBaseDir(), true); $output = ob_get_contents(); ob_end_clean(); if (!$useFile || empty($outFile)) { echo $output; } else { file_put_contents($outFile->getPath(), $output); } }
/** * 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); } }