annotate vendor/squizlabs/php_codesniffer/CodeSniffer/Reports/Info.php @ 0:4c8ae668cc8c

Initial import (non-working)
author Chris Cannam
date Wed, 29 Nov 2017 16:09:58 +0000
parents
children
rev   line source
Chris@0 1 <?php
Chris@0 2 /**
Chris@0 3 * Info report for PHP_CodeSniffer.
Chris@0 4 *
Chris@0 5 * PHP version 5
Chris@0 6 *
Chris@0 7 * @category PHP
Chris@0 8 * @package PHP_CodeSniffer
Chris@0 9 * @author Greg Sherwood <gsherwood@squiz.net>
Chris@0 10 * @copyright 2006-2014 Squiz Pty Ltd (ABN 77 084 670 600)
Chris@0 11 * @license https://github.com/squizlabs/PHP_CodeSniffer/blob/master/licence.txt BSD Licence
Chris@0 12 * @link http://pear.php.net/package/PHP_CodeSniffer
Chris@0 13 */
Chris@0 14
Chris@0 15 /**
Chris@0 16 * Info report for PHP_CodeSniffer.
Chris@0 17 *
Chris@0 18 * PHP version 5
Chris@0 19 *
Chris@0 20 * @category PHP
Chris@0 21 * @package PHP_CodeSniffer
Chris@0 22 * @author Greg Sherwood <gsherwood@squiz.net>
Chris@0 23 * @copyright 2006-2014 Squiz Pty Ltd (ABN 77 084 670 600)
Chris@0 24 * @license https://github.com/squizlabs/PHP_CodeSniffer/blob/master/licence.txt BSD Licence
Chris@0 25 * @version Release: @package_version@
Chris@0 26 * @link http://pear.php.net/package/PHP_CodeSniffer
Chris@0 27 */
Chris@0 28 class PHP_CodeSniffer_Reports_Info implements PHP_CodeSniffer_Report
Chris@0 29 {
Chris@0 30
Chris@0 31 /**
Chris@0 32 * TRUE if this report needs error messages instead of just totals.
Chris@0 33 *
Chris@0 34 * @var boolean
Chris@0 35 */
Chris@0 36 public $recordErrors = false;
Chris@0 37
Chris@0 38 /**
Chris@0 39 * A cache of metrics collected during the run.
Chris@0 40 *
Chris@0 41 * @var array
Chris@0 42 */
Chris@0 43 private $_metricCache = array();
Chris@0 44
Chris@0 45
Chris@0 46 /**
Chris@0 47 * Generate a partial report for a single processed file.
Chris@0 48 *
Chris@0 49 * Function should return TRUE if it printed or stored data about the file
Chris@0 50 * and FALSE if it ignored the file. Returning TRUE indicates that the file and
Chris@0 51 * its data should be counted in the grand totals.
Chris@0 52 *
Chris@0 53 * @param array $report Prepared report data.
Chris@0 54 * @param PHP_CodeSniffer_File $phpcsFile The file being reported on.
Chris@0 55 * @param boolean $showSources Show sources?
Chris@0 56 * @param int $width Maximum allowed line width.
Chris@0 57 *
Chris@0 58 * @return boolean
Chris@0 59 */
Chris@0 60 public function generateFileReport(
Chris@0 61 $report,
Chris@0 62 PHP_CodeSniffer_File $phpcsFile,
Chris@0 63 $showSources=false,
Chris@0 64 $width=80
Chris@0 65 ) {
Chris@0 66 $metrics = $phpcsFile->getMetrics();
Chris@0 67 foreach ($metrics as $metric => $data) {
Chris@0 68 if (isset($this->_metricCache[$metric]) === false) {
Chris@0 69 $this->_metricCache[$metric] = array();
Chris@0 70 }
Chris@0 71
Chris@0 72 foreach ($data['values'] as $value => $locations) {
Chris@0 73 $locations = array_unique($locations);
Chris@0 74 $count = count($locations);
Chris@0 75
Chris@0 76 if (isset($this->_metricCache[$metric][$value]) === false) {
Chris@0 77 $this->_metricCache[$metric][$value] = $count;
Chris@0 78 } else {
Chris@0 79 $this->_metricCache[$metric][$value] += $count;
Chris@0 80 }
Chris@0 81 }
Chris@0 82 }//end foreach
Chris@0 83
Chris@0 84 return true;
Chris@0 85
Chris@0 86 }//end generateFileReport()
Chris@0 87
Chris@0 88
Chris@0 89 /**
Chris@0 90 * Prints the source of all errors and warnings.
Chris@0 91 *
Chris@0 92 * @param string $cachedData Any partial report data that was returned from
Chris@0 93 * generateFileReport during the run.
Chris@0 94 * @param int $totalFiles Total number of files processed during the run.
Chris@0 95 * @param int $totalErrors Total number of errors found during the run.
Chris@0 96 * @param int $totalWarnings Total number of warnings found during the run.
Chris@0 97 * @param int $totalFixable Total number of problems that can be fixed.
Chris@0 98 * @param boolean $showSources Show sources?
Chris@0 99 * @param int $width Maximum allowed line width.
Chris@0 100 * @param boolean $toScreen Is the report being printed to screen?
Chris@0 101 *
Chris@0 102 * @return void
Chris@0 103 */
Chris@0 104 public function generate(
Chris@0 105 $cachedData,
Chris@0 106 $totalFiles,
Chris@0 107 $totalErrors,
Chris@0 108 $totalWarnings,
Chris@0 109 $totalFixable,
Chris@0 110 $showSources=false,
Chris@0 111 $width=80,
Chris@0 112 $toScreen=true
Chris@0 113 ) {
Chris@0 114 if (empty($this->_metricCache) === true) {
Chris@0 115 // Nothing to show.
Chris@0 116 return;
Chris@0 117 }
Chris@0 118
Chris@0 119 ksort($this->_metricCache);
Chris@0 120
Chris@0 121 echo PHP_EOL."\033[1m".'PHP CODE SNIFFER INFORMATION REPORT'."\033[0m".PHP_EOL;
Chris@0 122 echo str_repeat('-', 70).PHP_EOL;
Chris@0 123
Chris@0 124 foreach ($this->_metricCache as $metric => $values) {
Chris@0 125 $winner = '';
Chris@0 126 $winnerCount = 0;
Chris@0 127 $totalCount = 0;
Chris@0 128 foreach ($values as $value => $count) {
Chris@0 129 $totalCount += $count;
Chris@0 130 if ($count > $winnerCount) {
Chris@0 131 $winner = $value;
Chris@0 132 $winnerCount = $count;
Chris@0 133 }
Chris@0 134 }
Chris@0 135
Chris@0 136 $winPercent = round(($winnerCount / $totalCount * 100), 2);
Chris@0 137 echo "$metric: \033[4m$winner\033[0m [$winnerCount/$totalCount, $winPercent%]".PHP_EOL;
Chris@0 138
Chris@0 139 asort($values);
Chris@0 140 $values = array_reverse($values, true);
Chris@0 141 foreach ($values as $value => $count) {
Chris@0 142 if ($value === $winner) {
Chris@0 143 continue;
Chris@0 144 }
Chris@0 145
Chris@0 146 $percent = round(($count / $totalCount * 100), 2);
Chris@0 147 echo "\t$value => $count ($percent%)".PHP_EOL;
Chris@0 148 }
Chris@0 149
Chris@0 150 echo PHP_EOL;
Chris@0 151 }//end foreach
Chris@0 152
Chris@0 153 echo str_repeat('-', 70).PHP_EOL;
Chris@0 154
Chris@0 155 if ($toScreen === true && PHP_CODESNIFFER_INTERACTIVE === false) {
Chris@0 156 PHP_CodeSniffer_Reporting::printRunTime();
Chris@0 157 }
Chris@0 158
Chris@0 159 }//end generate()
Chris@0 160
Chris@0 161
Chris@0 162 }//end class