Chris@0
|
1 <?php
|
Chris@0
|
2 /**
|
Chris@0
|
3 * Json 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 Jeffrey Fisher <jeffslofish@gmail.com>
|
Chris@0
|
10 * @author Greg Sherwood <gsherwood@squiz.net>
|
Chris@0
|
11 * @copyright 2006-2014 Squiz Pty Ltd (ABN 77 084 670 600)
|
Chris@0
|
12 * @license https://github.com/squizlabs/PHP_CodeSniffer/blob/master/licence.txt BSD Licence
|
Chris@0
|
13 * @link http://pear.php.net/package/PHP_CodeSniffer
|
Chris@0
|
14 */
|
Chris@0
|
15
|
Chris@0
|
16 /**
|
Chris@0
|
17 * Json report for PHP_CodeSniffer.
|
Chris@0
|
18 *
|
Chris@0
|
19 * PHP version 5
|
Chris@0
|
20 *
|
Chris@0
|
21 * @category PHP
|
Chris@0
|
22 * @package PHP_CodeSniffer
|
Chris@0
|
23 * @author Jeffrey Fisher <jeffslofish@gmail.com>
|
Chris@0
|
24 * @author Greg Sherwood <gsherwood@squiz.net>
|
Chris@0
|
25 * @copyright 2006-2014 Squiz Pty Ltd (ABN 77 084 670 600)
|
Chris@0
|
26 * @license https://github.com/squizlabs/PHP_CodeSniffer/blob/master/licence.txt BSD Licence
|
Chris@0
|
27 * @version Release: @package_version@
|
Chris@0
|
28 * @link http://pear.php.net/package/PHP_CodeSniffer
|
Chris@0
|
29 */
|
Chris@0
|
30 class PHP_CodeSniffer_Reports_Json implements PHP_CodeSniffer_Report
|
Chris@0
|
31 {
|
Chris@0
|
32
|
Chris@0
|
33
|
Chris@0
|
34 /**
|
Chris@0
|
35 * Generate a partial report for a single processed file.
|
Chris@0
|
36 *
|
Chris@0
|
37 * Function should return TRUE if it printed or stored data about the file
|
Chris@0
|
38 * and FALSE if it ignored the file. Returning TRUE indicates that the file and
|
Chris@0
|
39 * its data should be counted in the grand totals.
|
Chris@0
|
40 *
|
Chris@0
|
41 * @param array $report Prepared report data.
|
Chris@0
|
42 * @param PHP_CodeSniffer_File $phpcsFile The file being reported on.
|
Chris@0
|
43 * @param boolean $showSources Show sources?
|
Chris@0
|
44 * @param int $width Maximum allowed line width.
|
Chris@0
|
45 *
|
Chris@0
|
46 * @return boolean
|
Chris@0
|
47 */
|
Chris@0
|
48 public function generateFileReport(
|
Chris@0
|
49 $report,
|
Chris@0
|
50 PHP_CodeSniffer_File $phpcsFile,
|
Chris@0
|
51 $showSources=false,
|
Chris@0
|
52 $width=80
|
Chris@0
|
53 ) {
|
Chris@0
|
54 $filename = str_replace('\\', '\\\\', $report['filename']);
|
Chris@0
|
55 $filename = str_replace('"', '\"', $filename);
|
Chris@0
|
56 $filename = str_replace('/', '\/', $filename);
|
Chris@0
|
57 echo '"'.$filename.'":{';
|
Chris@0
|
58 echo '"errors":'.$report['errors'].',"warnings":'.$report['warnings'].',"messages":[';
|
Chris@0
|
59
|
Chris@0
|
60 $messages = '';
|
Chris@0
|
61 foreach ($report['messages'] as $line => $lineErrors) {
|
Chris@0
|
62 foreach ($lineErrors as $column => $colErrors) {
|
Chris@0
|
63 foreach ($colErrors as $error) {
|
Chris@0
|
64 $error['message'] = str_replace('\\', '\\\\', $error['message']);
|
Chris@0
|
65 $error['message'] = str_replace('"', '\"', $error['message']);
|
Chris@0
|
66 $error['message'] = str_replace('/', '\/', $error['message']);
|
Chris@0
|
67 $error['message'] = str_replace("\n", '\n', $error['message']);
|
Chris@0
|
68 $error['message'] = str_replace("\r", '\r', $error['message']);
|
Chris@0
|
69 $error['message'] = str_replace("\t", '\t', $error['message']);
|
Chris@0
|
70
|
Chris@0
|
71 $fixable = 'false';
|
Chris@0
|
72 if ($error['fixable'] === true) {
|
Chris@0
|
73 $fixable = 'true';
|
Chris@0
|
74 }
|
Chris@0
|
75
|
Chris@0
|
76 $messages .= '{"message":"'.$error['message'].'",';
|
Chris@0
|
77 $messages .= '"source":"'.$error['source'].'",';
|
Chris@0
|
78 $messages .= '"severity":'.$error['severity'].',';
|
Chris@0
|
79 $messages .= '"type":"'.$error['type'].'",';
|
Chris@0
|
80 $messages .= '"line":'.$line.',';
|
Chris@0
|
81 $messages .= '"column":'.$column.',';
|
Chris@0
|
82 $messages .= '"fixable":'.$fixable;
|
Chris@0
|
83 $messages .= '},';
|
Chris@0
|
84 }//end foreach
|
Chris@0
|
85 }//end foreach
|
Chris@0
|
86 }//end foreach
|
Chris@0
|
87
|
Chris@0
|
88 echo rtrim($messages, ',');
|
Chris@0
|
89 echo ']},';
|
Chris@0
|
90
|
Chris@0
|
91 return true;
|
Chris@0
|
92
|
Chris@0
|
93 }//end generateFileReport()
|
Chris@0
|
94
|
Chris@0
|
95
|
Chris@0
|
96 /**
|
Chris@0
|
97 * Generates a JSON report.
|
Chris@0
|
98 *
|
Chris@0
|
99 * @param string $cachedData Any partial report data that was returned from
|
Chris@0
|
100 * generateFileReport during the run.
|
Chris@0
|
101 * @param int $totalFiles Total number of files processed during the run.
|
Chris@0
|
102 * @param int $totalErrors Total number of errors found during the run.
|
Chris@0
|
103 * @param int $totalWarnings Total number of warnings found during the run.
|
Chris@0
|
104 * @param int $totalFixable Total number of problems that can be fixed.
|
Chris@0
|
105 * @param boolean $showSources Show sources?
|
Chris@0
|
106 * @param int $width Maximum allowed line width.
|
Chris@0
|
107 * @param boolean $toScreen Is the report being printed to screen?
|
Chris@0
|
108 *
|
Chris@0
|
109 * @return void
|
Chris@0
|
110 */
|
Chris@0
|
111 public function generate(
|
Chris@0
|
112 $cachedData,
|
Chris@0
|
113 $totalFiles,
|
Chris@0
|
114 $totalErrors,
|
Chris@0
|
115 $totalWarnings,
|
Chris@0
|
116 $totalFixable,
|
Chris@0
|
117 $showSources=false,
|
Chris@0
|
118 $width=80,
|
Chris@0
|
119 $toScreen=true
|
Chris@0
|
120 ) {
|
Chris@0
|
121 echo '{"totals":{"errors":'.$totalErrors.',"warnings":'.$totalWarnings.',"fixable":'.$totalFixable.'},"files":{';
|
Chris@0
|
122 echo rtrim($cachedData, ',');
|
Chris@0
|
123 echo "}}";
|
Chris@0
|
124
|
Chris@0
|
125 }//end generate()
|
Chris@0
|
126
|
Chris@0
|
127
|
Chris@0
|
128 }//end class
|