Mercurial > hg > isophonics-drupal-site
diff 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 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/squizlabs/php_codesniffer/CodeSniffer/Reports/Info.php Wed Nov 29 16:09:58 2017 +0000 @@ -0,0 +1,162 @@ +<?php +/** + * Info report for PHP_CodeSniffer. + * + * PHP version 5 + * + * @category PHP + * @package PHP_CodeSniffer + * @author Greg Sherwood <gsherwood@squiz.net> + * @copyright 2006-2014 Squiz Pty Ltd (ABN 77 084 670 600) + * @license https://github.com/squizlabs/PHP_CodeSniffer/blob/master/licence.txt BSD Licence + * @link http://pear.php.net/package/PHP_CodeSniffer + */ + +/** + * Info report for PHP_CodeSniffer. + * + * PHP version 5 + * + * @category PHP + * @package PHP_CodeSniffer + * @author Greg Sherwood <gsherwood@squiz.net> + * @copyright 2006-2014 Squiz Pty Ltd (ABN 77 084 670 600) + * @license https://github.com/squizlabs/PHP_CodeSniffer/blob/master/licence.txt BSD Licence + * @version Release: @package_version@ + * @link http://pear.php.net/package/PHP_CodeSniffer + */ +class PHP_CodeSniffer_Reports_Info implements PHP_CodeSniffer_Report +{ + + /** + * TRUE if this report needs error messages instead of just totals. + * + * @var boolean + */ + public $recordErrors = false; + + /** + * A cache of metrics collected during the run. + * + * @var array + */ + private $_metricCache = array(); + + + /** + * Generate a partial report for a single processed file. + * + * Function should return TRUE if it printed or stored data about the file + * and FALSE if it ignored the file. Returning TRUE indicates that the file and + * its data should be counted in the grand totals. + * + * @param array $report Prepared report data. + * @param PHP_CodeSniffer_File $phpcsFile The file being reported on. + * @param boolean $showSources Show sources? + * @param int $width Maximum allowed line width. + * + * @return boolean + */ + public function generateFileReport( + $report, + PHP_CodeSniffer_File $phpcsFile, + $showSources=false, + $width=80 + ) { + $metrics = $phpcsFile->getMetrics(); + foreach ($metrics as $metric => $data) { + if (isset($this->_metricCache[$metric]) === false) { + $this->_metricCache[$metric] = array(); + } + + foreach ($data['values'] as $value => $locations) { + $locations = array_unique($locations); + $count = count($locations); + + if (isset($this->_metricCache[$metric][$value]) === false) { + $this->_metricCache[$metric][$value] = $count; + } else { + $this->_metricCache[$metric][$value] += $count; + } + } + }//end foreach + + return true; + + }//end generateFileReport() + + + /** + * Prints the source of all errors and warnings. + * + * @param string $cachedData Any partial report data that was returned from + * generateFileReport during the run. + * @param int $totalFiles Total number of files processed during the run. + * @param int $totalErrors Total number of errors found during the run. + * @param int $totalWarnings Total number of warnings found during the run. + * @param int $totalFixable Total number of problems that can be fixed. + * @param boolean $showSources Show sources? + * @param int $width Maximum allowed line width. + * @param boolean $toScreen Is the report being printed to screen? + * + * @return void + */ + public function generate( + $cachedData, + $totalFiles, + $totalErrors, + $totalWarnings, + $totalFixable, + $showSources=false, + $width=80, + $toScreen=true + ) { + if (empty($this->_metricCache) === true) { + // Nothing to show. + return; + } + + ksort($this->_metricCache); + + echo PHP_EOL."\033[1m".'PHP CODE SNIFFER INFORMATION REPORT'."\033[0m".PHP_EOL; + echo str_repeat('-', 70).PHP_EOL; + + foreach ($this->_metricCache as $metric => $values) { + $winner = ''; + $winnerCount = 0; + $totalCount = 0; + foreach ($values as $value => $count) { + $totalCount += $count; + if ($count > $winnerCount) { + $winner = $value; + $winnerCount = $count; + } + } + + $winPercent = round(($winnerCount / $totalCount * 100), 2); + echo "$metric: \033[4m$winner\033[0m [$winnerCount/$totalCount, $winPercent%]".PHP_EOL; + + asort($values); + $values = array_reverse($values, true); + foreach ($values as $value => $count) { + if ($value === $winner) { + continue; + } + + $percent = round(($count / $totalCount * 100), 2); + echo "\t$value => $count ($percent%)".PHP_EOL; + } + + echo PHP_EOL; + }//end foreach + + echo str_repeat('-', 70).PHP_EOL; + + if ($toScreen === true && PHP_CODESNIFFER_INTERACTIVE === false) { + PHP_CodeSniffer_Reporting::printRunTime(); + } + + }//end generate() + + +}//end class