Source for file Source.php
Documentation is available at Source.php
* Source report for PHP_CodeSniffer.
* @author Greg Sherwood <gsherwood@squiz.net>
* @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600)
* @license https://github.com/squizlabs/PHP_CodeSniffer/blob/master/licence.txt BSD Licence
namespace PHP_CodeSniffer\Reports;
use PHP_CodeSniffer\Files\File;
use PHP_CodeSniffer\Util\Timing;
class Source implements Report
* 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 bool $showSources Show sources?
* @param int $width Maximum allowed line width.
public function generateFileReport ($report, File $phpcsFile, $showSources=false , $width=80 )
if ($report['errors'] === 0 && $report['warnings'] === 0 ) {
foreach ($report['messages'] as $line => $lineErrors) {
foreach ($lineErrors as $column => $colErrors) {
foreach ($colErrors as $error) {
if (isset ($sources[$src]) === false ) {
'fixable' => (int) $error['fixable'],
$sources[$src]['count']++;
foreach ($sources as $source => $data) {
echo $source. '>>'. $data['fixable']. '>>'. $data['count'].PHP_EOL;
}//end generateFileReport()
* Prints the source of all errors and warnings.
* @param string $cachedData Any partial report data that was returned from
* generateFileReport during the run.
* @param int $totalFiles Total number of files processed during the run.
* @param int $totalErrors Total number of errors found during the run.
* @param int $totalWarnings Total number of warnings found during the run.
* @param int $totalFixable Total number of problems that can be fixed.
* @param bool $showSources Show sources?
* @param int $width Maximum allowed line width.
* @param bool $interactive Are we running in interactive mode?
* @param bool $toScreen Is the report being printed to screen?
public function generate (
$lines = explode(PHP_EOL , $cachedData);
if (empty ($lines) === true ) {
foreach ($lines as $line) {
$fixable = (bool) $parts[1 ];
if (isset ($sources[$source]) === false ) {
if ($showSources === true ) {
if ($parts[0 ] === 'Internal') {
$parts[1 ] = $this->makeFriendlyName ($parts[1 ]);
$sniff = $this->makeFriendlyName ($parts[2 ]);
if (isset ($parts[3 ]) === true ) {
$name = $this->makeFriendlyName ($parts[3 ]);
$maxLength = max($maxLength, strlen($sniff));
$sources[$source] = array (
$sources[$source]['count'] += $count;
$reportFiles[$parts[0 ]] = array (
if ($showSources === true ) {
$width = min($width, ($maxLength + 11 ));
$width = min($width, ($maxLength + 41 ));
$width = max($width, 70 );
echo PHP_EOL. "\033[1mPHP CODE SNIFFER VIOLATION SOURCE SUMMARY\033[0m".PHP_EOL;
if ($showSources === true ) {
echo ' SOURCE'. str_repeat(' ', ($width - 15 )). 'COUNT'.PHP_EOL;
echo 'SOURCE'. str_repeat(' ', ($width - 11 )). 'COUNT'.PHP_EOL;
echo ' STANDARD CATEGORY SNIFF'. str_repeat(' ', ($width - 44 )). 'COUNT'.PHP_EOL;
echo 'STANDARD CATEGORY SNIFF'. str_repeat(' ', ($width - 40 )). 'COUNT'.PHP_EOL;
if ($showSources === true ) {
$maxSniffWidth = ($width - 7 );
$maxSniffWidth = ($width - 37 );
foreach ($sources as $source => $sourceData) {
if ($sourceData['fixable'] === true ) {
if ($showSources === true ) {
if (strlen($source) > $maxSniffWidth) {
$source = substr($source, 0 , $maxSniffWidth);
$parts = $sourceData['parts'];
$parts[0 ] = substr($parts[0 ], 0 , ((strlen($parts[0 ]) - 8 ) * -1 ));
$category = substr($category, 0 , ((strlen($category) - 18 ) * -1 ));
if (strlen($sniff) > $maxSniffWidth) {
$sniff = substr($sniff, 0 , $maxSniffWidth);
echo $sourceData['count'].PHP_EOL;
echo "\033[1m". 'A TOTAL OF '. ($totalErrors + $totalWarnings). ' SNIFF VIOLATION';
if (($totalErrors + $totalWarnings) > 1 ) {
echo ' WERE FOUND IN '. count($sources). ' SOURCE';
if (count($sources) !== 1 ) {
echo " \033[1mPHPCBF CAN FIX THE $fixableSources MARKED SOURCES AUTOMATICALLY ($totalFixable VIOLATIONS IN TOTAL)\033[0m";
echo PHP_EOL. str_repeat('-', $width).PHP_EOL.PHP_EOL;
if ($toScreen === true && $interactive === false ) {
* Converts a camel caps name into a readable string.
* @param string $name The camel caps name to convert.
public function makeFriendlyName ($name)
if (trim($name) === '') {
for ($i = 0; $i < $length; $i++ ) {
if ($lastWasNumeric === false ) {
if ($char === $name[$i]) {
if ($lastWasUpper === false ) {
if ($i < ($length - 1 )) {
// Next char is lowercase so it is a word boundary.
$friendlyName .= $name[$i];
$friendlyName = trim($friendlyName);
}//end makeFriendlyName()
Documentation generated on Mon, 11 Mar 2019 15:27:46 -0400 by phpDocumentor 1.4.4. PEAR Logo Copyright © PHP Group 2004.
|