function Source::generate
Prints the source of all errors and warnings.
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/ Source.php, line 84
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;
}
$sources = [];
$maxLength = 0;
foreach ($lines as $line) {
$parts = explode('>>', $line);
$source = $parts[0];
$fixable = (bool) $parts[1];
$count = $parts[2];
if (isset($sources[$source]) === false) {
if ($showSources === true) {
$parts = null;
$sniff = $source;
}
else {
$parts = explode('.', $source);
if ($parts[0] === 'Internal') {
$parts[2] = $parts[1];
$parts[1] = '';
}
$parts[1] = $this->makeFriendlyName($parts[1]);
$sniff = $this->makeFriendlyName($parts[2]);
if (isset($parts[3]) === true) {
$name = $this->makeFriendlyName($parts[3]);
$name[0] = strtolower($name[0]);
$sniff .= ' ' . $name;
unset($parts[3]);
}
$parts[2] = $sniff;
}
//end if
$maxLength = max($maxLength, strlen($sniff));
$sources[$source] = [
'count' => $count,
'fixable' => $fixable,
'parts' => $parts,
];
}
else {
$sources[$source]['count'] += $count;
}
//end if
}
//end foreach
if ($showSources === true) {
$width = min($width, $maxLength + 11);
}
else {
$width = min($width, $maxLength + 41);
}
$width = max($width, 70);
// Sort the data based on counts and source code.
$sourceCodes = array_keys($sources);
$counts = [];
foreach ($sources as $source => $data) {
$counts[$source] = $data['count'];
}
array_multisort($counts, SORT_DESC, $sourceCodes, SORT_ASC, SORT_NATURAL, $sources);
echo PHP_EOL . "\x1b[1mPHP CODE SNIFFER VIOLATION SOURCE SUMMARY\x1b[0m" . PHP_EOL;
echo str_repeat('-', $width) . PHP_EOL . "\x1b[1m";
if ($showSources === true) {
if ($totalFixable > 0) {
echo ' SOURCE' . str_repeat(' ', $width - 15) . 'COUNT' . PHP_EOL;
}
else {
echo 'SOURCE' . str_repeat(' ', $width - 11) . 'COUNT' . PHP_EOL;
}
}
else {
if ($totalFixable > 0) {
echo ' STANDARD CATEGORY SNIFF' . str_repeat(' ', $width - 44) . 'COUNT' . PHP_EOL;
}
else {
echo 'STANDARD CATEGORY SNIFF' . str_repeat(' ', $width - 40) . 'COUNT' . PHP_EOL;
}
}
echo "\x1b[0m" . str_repeat('-', $width) . PHP_EOL;
$fixableSources = 0;
if ($showSources === true) {
$maxSniffWidth = $width - 7;
}
else {
$maxSniffWidth = $width - 37;
}
if ($totalFixable > 0) {
$maxSniffWidth -= 4;
}
foreach ($sources as $source => $sourceData) {
if ($totalFixable > 0) {
echo '[';
if ($sourceData['fixable'] === true) {
echo 'x';
$fixableSources++;
}
else {
echo ' ';
}
echo '] ';
}
if ($showSources === true) {
if (strlen($source) > $maxSniffWidth) {
$source = substr($source, 0, $maxSniffWidth);
}
echo $source;
if ($totalFixable > 0) {
echo str_repeat(' ', $width - 9 - strlen($source));
}
else {
echo str_repeat(' ', $width - 5 - strlen($source));
}
}
else {
$parts = $sourceData['parts'];
if (strlen($parts[0]) > 8) {
$parts[0] = substr($parts[0], 0, (strlen($parts[0]) - 8) * -1);
}
echo $parts[0] . str_repeat(' ', 10 - strlen($parts[0]));
$category = $parts[1];
if (strlen($category) > 18) {
$category = substr($category, 0, (strlen($category) - 18) * -1);
}
echo $category . str_repeat(' ', 20 - strlen($category));
$sniff = $parts[2];
if (strlen($sniff) > $maxSniffWidth) {
$sniff = substr($sniff, 0, $maxSniffWidth);
}
if ($totalFixable > 0) {
echo $sniff . str_repeat(' ', $width - 39 - strlen($sniff));
}
else {
echo $sniff . str_repeat(' ', $width - 35 - strlen($sniff));
}
}
//end if
echo $sourceData['count'] . PHP_EOL;
}
//end foreach
echo str_repeat('-', $width) . PHP_EOL;
echo "\x1b[1m" . 'A TOTAL OF ' . ($totalErrors + $totalWarnings) . ' SNIFF VIOLATION';
if ($totalErrors + $totalWarnings > 1) {
echo 'S';
}
echo ' WERE FOUND IN ' . count($sources) . ' SOURCE';
if (count($sources) !== 1) {
echo 'S';
}
echo "\x1b[0m";
if ($totalFixable > 0) {
echo PHP_EOL . str_repeat('-', $width) . PHP_EOL;
echo "\x1b[1mPHPCBF CAN FIX THE {$fixableSources} MARKED SOURCES AUTOMATICALLY ({$totalFixable} VIOLATIONS IN TOTAL)\x1b[0m";
}
echo PHP_EOL . str_repeat('-', $width) . PHP_EOL . PHP_EOL;
if ($toScreen === true && $interactive === false) {
Timing::printRunTime();
}
}