Example #1
0
 /**
  * @param \Pvra\Result\Collection $results
  * @param \Symfony\Component\Console\Output\OutputInterface $out
  * @param \Symfony\Component\Console\Input\InputInterface $in
  */
 protected function renderResultCollectionByRequiredVersion(Collection $results, OutputInterface $out, InputInterface $in)
 {
     $highestRequirement = $results->getHighestDemandingResult();
     if ($highestRequirement === null) {
         // @codeCoverageIgnoreStart
         throw new RuntimeException('Detection of requirements failed. Unknown error.');
         // @codeCoverageIgnoreEnd
     }
     $out->write(['Highest required version is PHP ', $highestRequirement->getRequiredVersion(), ' in ', $highestRequirement->getAnalysisTargetId(), $results->count() > 1 ? ' and others' : '', PHP_EOL]);
     $out->writeln('');
     $usedVersions = [];
     /** @var AnalysisResult $result */
     foreach ($results as $result) {
         $versions = array_keys($result->getRequirements());
         foreach ($versions as $version) {
             $usedVersions[$version] = $version;
         }
     }
     usort($usedVersions, function ($a, $b) {
         return version_compare($b, $a);
     });
     $table = new Table($out);
     $table->setHeaders(['Version', 'Message', 'Position']);
     foreach ($usedVersions as $index => $version) {
         /** @var AnalysisResult $result */
         foreach ($results as $result) {
             $selectedResults = $result->getRequirementInfo($version);
             if (!empty($selectedResults)) {
                 foreach ($selectedResults as $reason) {
                     $table->addRow([$version, $reason['msg'], $this->formatOutputPath($reason['targetId']) . ':' . $reason['line']]);
                 }
             }
         }
         if (isset($usedVersions[$index + 1])) {
             // there is a row after this one
             $table->addRow(new TableSeparator());
         }
     }
     $table->render();
 }