function Info::generate
Prints the recorded metrics.
Parameters
string $cachedData Any partial report data that was returned from: generateFileReport during the run.
int $totalFiles Total number of files processed during the run.:
int $totalErrors Total number of errors found during the run.:
int $totalWarnings Total number of warnings found during the run.:
int $totalFixable Total number of problems that can be fixed.:
bool $showSources Show sources?:
int $width Maximum allowed line width.:
bool $interactive Are we running in interactive mode?:
bool $toScreen Is the report being printed to screen?:
Return value
void
Overrides Report::generate
File
-
vendor/
squizlabs/ php_codesniffer/ src/ Reports/ Info.php, line 64
Class
Namespace
PHP_CodeSniffer\ReportsCode
public function generate($cachedData, $totalFiles, $totalErrors, $totalWarnings, $totalFixable, $showSources = false, $width = 80, $interactive = false, $toScreen = true) {
$lines = explode(PHP_EOL, $cachedData);
array_pop($lines);
if (empty($lines) === true) {
return;
}
$metrics = [];
foreach ($lines as $line) {
$parts = explode('>>', $line);
$metric = $parts[0];
$value = $parts[1];
$count = $parts[2];
if (isset($metrics[$metric]) === false) {
$metrics[$metric] = [];
}
if (isset($metrics[$metric][$value]) === false) {
$metrics[$metric][$value] = $count;
}
else {
$metrics[$metric][$value] += $count;
}
}
ksort($metrics);
echo PHP_EOL . "\x1b[1m" . 'PHP CODE SNIFFER INFORMATION REPORT' . "\x1b[0m" . PHP_EOL;
echo str_repeat('-', 70) . PHP_EOL;
foreach ($metrics as $metric => $values) {
if (count($values) === 1) {
$count = reset($values);
$value = key($values);
echo "{$metric}: \x1b[4m{$value}\x1b[0m [{$count}/{$count}, 100%]" . PHP_EOL;
}
else {
$totalCount = 0;
$valueWidth = 0;
foreach ($values as $value => $count) {
$totalCount += $count;
$valueWidth = max($valueWidth, strlen($value));
}
// Length of the total string, plus however many
// thousands separators there are.
$countWidth = strlen($totalCount);
$thousandSeparatorCount = floor($countWidth / 3);
$countWidth += $thousandSeparatorCount;
// Account for 'total' line.
$valueWidth = max(5, $valueWidth);
echo "{$metric}:" . PHP_EOL;
ksort($values, SORT_NATURAL);
arsort($values);
$percentPrefixWidth = 0;
$percentWidth = 6;
foreach ($values as $value => $count) {
$percent = round($count / $totalCount * 100, 2);
$percentPrefix = '';
if ($percent === 0.0) {
$percent = 0.01;
$percentPrefix = '<';
$percentPrefixWidth = 2;
$percentWidth = 4;
}
printf("\t%-{$valueWidth}s => %{$countWidth}s (%{$percentPrefixWidth}s%{$percentWidth}.2f%%)" . PHP_EOL, $value, number_format($count), $percentPrefix, $percent);
}
echo "\t" . str_repeat('-', $valueWidth + $countWidth + 15) . PHP_EOL;
printf("\t%-{$valueWidth}s => %{$countWidth}s (100.00%%)" . PHP_EOL, 'total', number_format($totalCount));
}
//end if
echo PHP_EOL;
}
//end foreach
echo str_repeat('-', 70) . PHP_EOL;
if ($toScreen === true && $interactive === false) {
Timing::printRunTime();
}
}