comparison vendor/squizlabs/php_codesniffer/CodeSniffer/Reports/Json.php @ 0:4c8ae668cc8c

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