SebastianBergmann\PHPCPD\Log\Text::printResult PHP Method

printResult() public method

Prints a result set from Detector::copyPasteDetection().
public printResult ( Symfony\Component\Console\Output\OutputInterface $output, CodeCloneMap $clones )
$output Symfony\Component\Console\Output\OutputInterface
$clones SebastianBergmann\PHPCPD\CodeCloneMap
    public function printResult(OutputInterface $output, CodeCloneMap $clones)
    {
        $numClones = count($clones);
        $verbose = $output->getVerbosity() > OutputInterface::VERBOSITY_NORMAL;
        if ($numClones > 0) {
            $buffer = '';
            $files = [];
            $lines = 0;
            foreach ($clones as $clone) {
                foreach ($clone->getFiles() as $file) {
                    $filename = $file->getName();
                    if (!isset($files[$filename])) {
                        $files[$filename] = true;
                    }
                }
                $lines += $clone->getSize() * (count($clone->getFiles()) - 1);
                $buffer .= "\n  -";
                foreach ($clone->getFiles() as $file) {
                    $buffer .= sprintf("\t%s:%d-%d\n ", $file->getName(), $file->getStartLine(), $file->getStartLine() + $clone->getSize());
                }
                if ($verbose) {
                    $buffer .= "\n" . $clone->getLines('      ');
                }
            }
            $output->write(sprintf("Found %d exact clones with %d duplicated lines in %d files:\n%s", $numClones, $lines, count($files), $buffer));
        }
        $output->write(sprintf("%s%s duplicated lines out of %d total lines of code.\n\n", $numClones > 0 ? "\n" : '', $clones->getPercentage(), $clones->getNumLines()));
    }

Usage Example

示例#1
0
 /**
  * Executes the current command.
  *
  * @param InputInterface  $input  An InputInterface instance
  * @param OutputInterface $output An OutputInterface instance
  *
  * @return null|integer null or 0 if everything went fine, or an error code
  */
 protected function execute(InputInterface $input, OutputInterface $output)
 {
     $finder = new FinderFacade($input->getArgument('values'), $input->getOption('exclude'), $this->handleCSVOption($input, 'names'), $this->handleCSVOption($input, 'names-exclude'));
     $files = $finder->findFiles();
     if (empty($files)) {
         $output->writeln('No files found to scan');
         exit(1);
     }
     $progressHelper = null;
     if ($input->getOption('progress')) {
         $progressHelper = $this->getHelperSet()->get('progress');
         $progressHelper->start($output, count($files));
     }
     $strategy = new DefaultStrategy();
     $detector = new Detector($strategy, $progressHelper);
     $quiet = $output->getVerbosity() == OutputInterface::VERBOSITY_QUIET;
     $clones = $detector->copyPasteDetection($files, $input->getOption('min-lines'), $input->getOption('min-tokens'), $input->getOption('fuzzy'));
     if ($input->getOption('progress')) {
         $progressHelper->finish();
         $output->writeln('');
     }
     if (!$quiet) {
         $printer = new Text();
         $printer->printResult($output, $clones);
         unset($printer);
     }
     $logPmd = $input->getOption('log-pmd');
     if ($logPmd) {
         $pmd = new PMD($logPmd);
         $pmd->processClones($clones);
         unset($pmd);
     }
     if (!$quiet) {
         print \PHP_Timer::resourceUsage() . "\n";
     }
     if (count($clones) > 0) {
         exit(1);
     }
 }
All Usage Examples Of SebastianBergmann\PHPCPD\Log\Text::printResult