1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153
|
<?php
/**
* Full report for PHP_CodeSniffer.
*
* PHP version 5
*
* @category PHP
* @package PHP_CodeSniffer
* @author Gabriele Santini <gsantini@sqli.com>
* @author Greg Sherwood <gsherwood@squiz.net>
* @copyright 2009 SQLI <www.sqli.com>
* @copyright 2006-2011 Squiz Pty Ltd (ABN 77 084 670 600)
* @license http://matrix.squiz.net/developer/tools/php_cs/licence BSD Licence
* @link http://pear.php.net/package/PHP_CodeSniffer
*/
/**
* Full report for PHP_CodeSniffer.
*
* PHP version 5
*
* @category PHP
* @package PHP_CodeSniffer
* @author Gabriele Santini <gsantini@sqli.com>
* @author Greg Sherwood <gsherwood@squiz.net>
* @copyright 2009 SQLI <www.sqli.com>
* @copyright 2006-2011 Squiz Pty Ltd (ABN 77 084 670 600)
* @license http://matrix.squiz.net/developer/tools/php_cs/licence BSD Licence
* @version Release: 1.3.4
* @link http://pear.php.net/package/PHP_CodeSniffer
*/
class PHP_CodeSniffer_Reports_Full implements PHP_CodeSniffer_Report
{
/**
* Prints all errors and warnings for each file processed.
*
* Errors and warnings are displayed together, grouped by file.
*
* @param array $report Prepared report.
* @param boolean $showSources Show sources?
* @param int $width Maximum allowed lne width.
* @param boolean $toScreen Is the report being printed to screen?
*
* @return string
*/
public function generate(
$report,
$showSources=false,
$width=80,
$toScreen=true
) {
$errorsShown = 0;
$width = max($width, 70);
foreach ($report['files'] as $filename => $file) {
if (empty($file['messages']) === true) {
continue;
}
echo PHP_EOL.'FILE: ';
if (strlen($filename) <= ($width - 9)) {
echo $filename;
} else {
echo '...'.substr($filename, (strlen($filename) - ($width - 9)));
}
echo PHP_EOL;
echo str_repeat('-', $width).PHP_EOL;
echo 'FOUND '.$file['errors'].' ERROR(S) ';
if ($file['warnings'] > 0) {
echo 'AND '.$file['warnings'].' WARNING(S) ';
}
echo 'AFFECTING '.count($file['messages']).' LINE(S)'.PHP_EOL;
echo str_repeat('-', $width).PHP_EOL;
// Work out the max line number for formatting.
$maxLine = 0;
foreach ($file['messages'] as $line => $lineErrors) {
if ($line > $maxLine) {
$maxLine = $line;
}
}
$maxLineLength = strlen($maxLine);
// The length of the word ERROR or WARNING; used for padding.
if ($file['warnings'] > 0) {
$typeLength = 7;
} else {
$typeLength = 5;
}
// The padding that all lines will require that are
// printing an error message overflow.
$paddingLine2 = str_repeat(' ', ($maxLineLength + 1));
$paddingLine2 .= ' | ';
$paddingLine2 .= str_repeat(' ', $typeLength);
$paddingLine2 .= ' | ';
// The maxium amount of space an error message can use.
$maxErrorSpace = ($width - strlen($paddingLine2) - 1);
foreach ($file['messages'] as $line => $lineErrors) {
foreach ($lineErrors as $column => $colErrors) {
foreach ($colErrors as $error) {
$message = $error['message'];
if ($showSources === true) {
$message .= ' ('.$error['source'].')';
}
// The padding that goes on the front of the line.
$padding = ($maxLineLength - strlen($line));
$errorMsg = wordwrap(
$message,
$maxErrorSpace,
PHP_EOL.$paddingLine2
);
echo ' '.str_repeat(' ', $padding).$line.' | '.$error['type'];
if ($error['type'] === 'ERROR') {
if ($file['warnings'] > 0) {
echo ' ';
}
}
echo ' | '.$errorMsg.PHP_EOL;
$errorsShown++;
}//end foreach
}//end foreach
}//end foreach
echo str_repeat('-', $width).PHP_EOL.PHP_EOL;
}//end foreach
if ($toScreen === true
&& PHP_CODESNIFFER_INTERACTIVE === false
&& class_exists('PHP_Timer', false) === true
) {
echo PHP_Timer::resourceUsage().PHP_EOL.PHP_EOL;
}
return $errorsShown;
}//end generate()
}//end class
?>
|