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
|