/**
* Generate a partial report for a single processed file.
*
* Function should return TRUE if it printed or stored data about the file
* and FALSE if it ignored the file. Returning TRUE indicates that the file and
* its data should be counted in the grand totals.
*
* @param array $report Prepared report data.
* @param PHP_CodeSniffer_File $phpcsFile The file being reported on.
* @param boolean $showSources Show sources?
* @param int $width Maximum allowed line width.
*
* @return boolean
*/
public function generateFileReport($report, PHP_CodeSniffer_File $phpcsFile, $showSources = false, $width = 80)
{
$cliValues = $phpcsFile->phpcs->cli->getCommandLineValues();
$errors = $phpcsFile->getFixableCount();
if ($errors !== 0) {
if (empty($cliValues['files']) === false) {
ob_end_clean();
$errors = $phpcsFile->getFixableCount();
$startTime = microtime(true);
echo "\t=> Fixing file: {$errors}/{$errors} violations remaining";
}
$fixed = $phpcsFile->fixer->fixFile();
}
if (empty($cliValues['files']) === true) {
// Replacing STDIN, so output current file to STDOUT
// even if nothing was fixed. Exit here because we
// can't process any more than 1 file in this setup.
echo $phpcsFile->fixer->getContents();
ob_end_flush();
exit(1);
}
if ($errors === 0) {
return false;
}
if ($fixed === false) {
echo 'ERROR';
} else {
echo 'DONE';
}
$timeTaken = (microtime(true) - $startTime) * 1000;
if ($timeTaken < 1000) {
$timeTaken = round($timeTaken);
echo " in {$timeTaken}ms" . PHP_EOL;
} else {
$timeTaken = round($timeTaken / 1000, 2);
echo " in {$timeTaken} secs" . PHP_EOL;
}
if ($fixed === true) {
$newFilename = $report['filename'] . $cliValues['phpcbf-suffix'];
$newContent = $phpcsFile->fixer->getContents();
file_put_contents($newFilename, $newContent);
if ($newFilename === $report['filename']) {
echo "\t=> File was overwritten" . PHP_EOL;
} else {
echo "\t=> Fixed file written to " . basename($newFilename) . PHP_EOL;
}
}
ob_start();
return $fixed;
}