Chris@0: Chris@0: * @author Marc McIntyre Chris@0: * @copyright 2006 Squiz Pty Ltd (ABN 77 084 670 600) Chris@0: * @license http://matrix.squiz.net/developer/tools/php_cs/licence BSD Licence Chris@0: * @link http://pear.php.net/package/PHP_CodeSniffer Chris@0: */ Chris@0: Chris@17: namespace Drupal\Sniffs\NamingConventions; Chris@17: Chris@17: use PHP_CodeSniffer\Files\File; Chris@17: use PHP_CodeSniffer\Sniffs\Sniff; Chris@17: Chris@0: /** Chris@17: * \Drupal\Sniffs\NamingConventions\ValidClassNameSniff. Chris@0: * Chris@0: * Ensures class and interface names start with a capital letter Chris@0: * and do not use _ separators. Chris@0: * Chris@0: * @category PHP Chris@0: * @package PHP_CodeSniffer Chris@0: * @author Greg Sherwood Chris@0: * @author Marc McIntyre Chris@0: * @copyright 2006 Squiz Pty Ltd (ABN 77 084 670 600) Chris@0: * @license http://matrix.squiz.net/developer/tools/php_cs/licence BSD Licence Chris@0: * @version Release: 1.2.0RC3 Chris@0: * @link http://pear.php.net/package/PHP_CodeSniffer Chris@0: */ Chris@17: class ValidClassNameSniff implements Sniff Chris@0: { Chris@0: Chris@0: Chris@0: /** Chris@0: * Returns an array of tokens this test wants to listen for. Chris@0: * Chris@0: * @return array Chris@0: */ Chris@0: public function register() Chris@0: { Chris@0: return array( Chris@0: T_CLASS, Chris@0: T_INTERFACE, Chris@0: ); Chris@0: Chris@0: }//end register() Chris@0: Chris@0: Chris@0: /** Chris@0: * Processes this test, when one of its tokens is encountered. Chris@0: * Chris@17: * @param \PHP_CodeSniffer\Files\File $phpcsFile The current file being processed. Chris@17: * @param int $stackPtr The position of the current token Chris@17: * in the stack passed in $tokens. Chris@0: * Chris@0: * @return void Chris@0: */ Chris@17: public function process(File $phpcsFile, $stackPtr) Chris@0: { Chris@0: $tokens = $phpcsFile->getTokens(); Chris@0: Chris@0: $className = $phpcsFile->findNext(T_STRING, $stackPtr); Chris@0: $name = trim($tokens[$className]['content']); Chris@0: $errorData = array(ucfirst($tokens[$stackPtr]['content'])); Chris@0: Chris@0: // Make sure the first letter is a capital. Chris@0: if (preg_match('|^[A-Z]|', $name) === 0) { Chris@0: $error = '%s name must begin with a capital letter'; Chris@0: $phpcsFile->addError($error, $stackPtr, 'StartWithCaptial', $errorData); Chris@0: } Chris@0: Chris@0: // Search for underscores. Chris@0: if (strpos($name, '_') !== false) { Chris@0: $error = '%s name must use UpperCamel naming without underscores'; Chris@0: $phpcsFile->addError($error, $stackPtr, 'NoUnderscores', $errorData); Chris@0: } Chris@0: Chris@0: }//end process() Chris@0: Chris@0: Chris@0: }//end class