protected function describeAnalysis(Analysis $analysis, array $options = array()) { $output = $options['output']; if (OutputInterface::VERBOSITY_VERY_VERBOSE <= $output->getVerbosity()) { $output->write(sprintf('Began at: <comment>%s</comment>', $analysis->getBeginAt()->format('Y-m-d h:i:s'))); } if (!$analysis->isFinished()) { if (OutputInterface::VERBOSITY_VERY_VERBOSE <= $output->getVerbosity()) { $output->writeln(''); } $output->writeln('The analysis is not finished yet.'); return; } if (OutputInterface::VERBOSITY_VERY_VERBOSE <= $output->getVerbosity()) { $output->write(sprintf(' Ended at: <comment>%s</comment>', $analysis->getEndAt()->format('Y-m-d h:i:s'))); $output->writeln(sprintf(' Real duration: <comment>%s</comment>.', $analysis->getEndAt()->format('Y-m-d h:i:s'))); $output->writeln(''); } $output->write(sprintf('The project has <comment>%d violations</comment>, it got the <comment>%s grade</comment>.', $analysis->getNbViolations(), $analysis->getGrade())); $grades = $analysis->getGrades(); $bestGrade = end($grades); if ($bestGrade == $analysis->getGrade()) { $output->writeln(''); return; } $output->writeln(sprintf(' <comment>%d hours</comment> to get the <comment>%s grade</comment> and %d hours to get the %s grade', $analysis->getRemediationCostForNextGrade(), $analysis->getNextGrade(), $analysis->getRemediationCost(), $bestGrade)); $output->writeln(''); if (OutputInterface::VERBOSITY_VERBOSE <= $output->getVerbosity() && $analysis->getViolations()) { $template = <<<EOL Resource: <comment>{{ resource }}:{{ line }}</comment> Category: <comment>{{ category }}</comment> Severity: <comment>{{ severity }}</comment> Title: <comment>{{ title }}</comment> Message: <comment>{{ message }}</comment> EOL; foreach ($analysis->getViolations() as $violation) { $output->writeln(strtr($template, array('{{ resource }}' => $violation->getResource(), '{{ line }}' => $violation->getLine(), '{{ category }}' => $violation->getCategory(), '{{ severity }}' => $violation->getSeverity(), '{{ title }}' => $violation->getTitle(), '{{ message }}' => $violation->getMessage()))); } } foreach ($analysis->getLinks() as $link) { if ('self' == $link->getRel() && 'text/html' == $link->getType()) { $output->writeln(sprintf('You can get the full report at <info>%s</info>', $link->getHref())); break; } } }