annotate vendor/squizlabs/php_codesniffer/CodeSniffer/Reports/Svnblame.php @ 8:50b0d041100e

Further files for download
author Chris Cannam
date Mon, 05 Feb 2018 10:56:40 +0000
parents 4c8ae668cc8c
children
rev   line source
Chris@0 1 <?php
Chris@0 2 /**
Chris@0 3 * Svnblame 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 Gabriele Santini <gsantini@sqli.com>
Chris@0 10 * @author Greg Sherwood <gsherwood@squiz.net>
Chris@0 11 * @copyright 2009-2014 SQLI <www.sqli.com>
Chris@0 12 * @copyright 2006-2014 Squiz Pty Ltd (ABN 77 084 670 600)
Chris@0 13 * @license https://github.com/squizlabs/PHP_CodeSniffer/blob/master/licence.txt BSD Licence
Chris@0 14 * @link http://pear.php.net/package/PHP_CodeSniffer
Chris@0 15 */
Chris@0 16
Chris@0 17 /**
Chris@0 18 * Svnblame report for PHP_CodeSniffer.
Chris@0 19 *
Chris@0 20 * PHP version 5
Chris@0 21 *
Chris@0 22 * @category PHP
Chris@0 23 * @package PHP_CodeSniffer
Chris@0 24 * @author Gabriele Santini <gsantini@sqli.com>
Chris@0 25 * @author Greg Sherwood <gsherwood@squiz.net>
Chris@0 26 * @copyright 2009-2014 SQLI <www.sqli.com>
Chris@0 27 * @copyright 2006-2014 Squiz Pty Ltd (ABN 77 084 670 600)
Chris@0 28 * @license https://github.com/squizlabs/PHP_CodeSniffer/blob/master/licence.txt BSD Licence
Chris@0 29 * @version Release: @package_version@
Chris@0 30 * @link http://pear.php.net/package/PHP_CodeSniffer
Chris@0 31 */
Chris@0 32 class PHP_CodeSniffer_Reports_Svnblame extends PHP_CodeSniffer_Reports_VersionControl
Chris@0 33 {
Chris@0 34
Chris@0 35 /**
Chris@0 36 * The name of the report we want in the output
Chris@0 37 *
Chris@0 38 * @var string
Chris@0 39 */
Chris@0 40 protected $reportName = 'SVN';
Chris@0 41
Chris@0 42
Chris@0 43 /**
Chris@0 44 * Extract the author from a blame line.
Chris@0 45 *
Chris@0 46 * @param string $line Line to parse.
Chris@0 47 *
Chris@0 48 * @return mixed string or false if impossible to recover.
Chris@0 49 */
Chris@0 50 protected function getAuthor($line)
Chris@0 51 {
Chris@0 52 $blameParts = array();
Chris@0 53 preg_match('|\s*([^\s]+)\s+([^\s]+)|', $line, $blameParts);
Chris@0 54
Chris@0 55 if (isset($blameParts[2]) === false) {
Chris@0 56 return false;
Chris@0 57 }
Chris@0 58
Chris@0 59 return $blameParts[2];
Chris@0 60
Chris@0 61 }//end getAuthor()
Chris@0 62
Chris@0 63
Chris@0 64 /**
Chris@0 65 * Gets the blame output.
Chris@0 66 *
Chris@0 67 * @param string $filename File to blame.
Chris@0 68 *
Chris@0 69 * @return array
Chris@0 70 */
Chris@0 71 protected function getBlameContent($filename)
Chris@0 72 {
Chris@0 73 $command = 'svn blame "'.$filename.'" 2>&1';
Chris@0 74 $handle = popen($command, 'r');
Chris@0 75 if ($handle === false) {
Chris@0 76 echo 'ERROR: Could not execute "'.$command.'"'.PHP_EOL.PHP_EOL;
Chris@0 77 exit(2);
Chris@0 78 }
Chris@0 79
Chris@0 80 $rawContent = stream_get_contents($handle);
Chris@0 81 fclose($handle);
Chris@0 82
Chris@0 83 $blames = explode("\n", $rawContent);
Chris@0 84
Chris@0 85 return $blames;
Chris@0 86
Chris@0 87 }//end getBlameContent()
Chris@0 88
Chris@0 89
Chris@0 90 }//end class