Esempio n. 1
0
 /**
  * Run the task.
  *
  * @param array &$options Additional options.
  *
  * @return integer Number of errors.
  */
 public function run(&$options)
 {
     require 'SebastianBergmann/PHPCPD/autoload.php';
     $lib = realpath($this->_config->getPath() . '/lib');
     $factory = new File_Iterator_Factory();
     $files = array_keys(iterator_to_array($factory->getFileIterator($lib, 'php')));
     $detector = new SebastianBergmann\PHPCPD\Detector\Detector(new SebastianBergmann\PHPCPD\Detector\Strategy\DefaultStrategy());
     $clones = $detector->copyPasteDetection($files, 5, 70);
     $printer = new SebastianBergmann\PHPCPD\TextUI\ResultPrinter();
     $printer->printResult($clones, $lib, true);
     return count($clones);
 }
 /**
  * Processes a list of clones.
  *
  * @param object $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) == 'PHPCPD_CloneMap') {
         $logger = new PHPCPD_TextUI_ResultPrinter();
     } else {
         $logger = new \SebastianBergmann\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);
     }
 }