/**
  * 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);
     }
 }
Ejemplo n.º 4
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);
     }
 }