Chris@0
|
1 <?php
|
Chris@0
|
2 /**
|
Chris@0
|
3 * Drupal_Sniffs_NamingConventions_ValidGlobalSniff.
|
Chris@0
|
4 *
|
Chris@0
|
5 * @category PHP
|
Chris@0
|
6 * @package PHP_CodeSniffer
|
Chris@0
|
7 * @link http://pear.php.net/package/PHP_CodeSniffer
|
Chris@0
|
8 */
|
Chris@0
|
9
|
Chris@0
|
10 /**
|
Chris@0
|
11 * Ensures that global variables start with an underscore.
|
Chris@0
|
12 *
|
Chris@0
|
13 * @category PHP
|
Chris@0
|
14 * @package PHP_CodeSniffer
|
Chris@0
|
15 * @link http://pear.php.net/package/PHP_CodeSniffer
|
Chris@0
|
16 */
|
Chris@0
|
17 class Drupal_Sniffs_NamingConventions_ValidGlobalSniff implements PHP_CodeSniffer_Sniff
|
Chris@0
|
18 {
|
Chris@0
|
19
|
Chris@0
|
20 public $coreGlobals = array(
|
Chris@0
|
21 '$argc',
|
Chris@0
|
22 '$argv',
|
Chris@0
|
23 '$base_insecure_url',
|
Chris@0
|
24 '$base_path',
|
Chris@0
|
25 '$base_root',
|
Chris@0
|
26 '$base_secure_url',
|
Chris@0
|
27 '$base_theme_info',
|
Chris@0
|
28 '$base_url',
|
Chris@0
|
29 '$channel',
|
Chris@0
|
30 '$conf',
|
Chris@0
|
31 '$config_directories',
|
Chris@0
|
32 '$cookie_domain',
|
Chris@0
|
33 '$databases',
|
Chris@0
|
34 '$db_prefix',
|
Chris@0
|
35 '$db_type',
|
Chris@0
|
36 '$db_url',
|
Chris@0
|
37 '$drupal_hash_salt',
|
Chris@0
|
38 '$drupal_test_info',
|
Chris@0
|
39 '$element',
|
Chris@0
|
40 '$forum_topic_list_header',
|
Chris@0
|
41 '$image',
|
Chris@0
|
42 '$install_state',
|
Chris@0
|
43 '$installed_profile',
|
Chris@0
|
44 '$is_https',
|
Chris@0
|
45 '$is_https_mock',
|
Chris@0
|
46 '$item',
|
Chris@0
|
47 '$items',
|
Chris@0
|
48 '$language',
|
Chris@0
|
49 '$language_content',
|
Chris@0
|
50 '$language_url',
|
Chris@0
|
51 '$locks',
|
Chris@0
|
52 '$menu_admin',
|
Chris@0
|
53 '$multibyte',
|
Chris@0
|
54 '$pager_limits',
|
Chris@0
|
55 '$pager_page_array',
|
Chris@0
|
56 '$pager_total',
|
Chris@0
|
57 '$pager_total_items',
|
Chris@0
|
58 '$tag',
|
Chris@0
|
59 '$theme',
|
Chris@0
|
60 '$theme_engine',
|
Chris@0
|
61 '$theme_info',
|
Chris@0
|
62 '$theme_key',
|
Chris@0
|
63 '$theme_path',
|
Chris@0
|
64 '$timers',
|
Chris@0
|
65 '$update_free_access',
|
Chris@0
|
66 '$update_rewrite_settings',
|
Chris@0
|
67 '$user',
|
Chris@0
|
68 );
|
Chris@0
|
69
|
Chris@0
|
70
|
Chris@0
|
71 /**
|
Chris@0
|
72 * Returns an array of tokens this test wants to listen for.
|
Chris@0
|
73 *
|
Chris@0
|
74 * @return array
|
Chris@0
|
75 */
|
Chris@0
|
76 public function register()
|
Chris@0
|
77 {
|
Chris@0
|
78 return array(T_GLOBAL);
|
Chris@0
|
79
|
Chris@0
|
80 }//end register()
|
Chris@0
|
81
|
Chris@0
|
82
|
Chris@0
|
83 /**
|
Chris@0
|
84 * Processes this test, when one of its tokens is encountered.
|
Chris@0
|
85 *
|
Chris@0
|
86 * @param PHP_CodeSniffer_File $phpcsFile The current file being processed.
|
Chris@0
|
87 * @param int $stackPtr The position of the current token
|
Chris@0
|
88 * in the stack passed in $tokens.
|
Chris@0
|
89 *
|
Chris@0
|
90 * @return void
|
Chris@0
|
91 */
|
Chris@0
|
92 public function process(PHP_CodeSniffer_File $phpcsFile, $stackPtr)
|
Chris@0
|
93 {
|
Chris@0
|
94 $tokens = $phpcsFile->getTokens();
|
Chris@0
|
95
|
Chris@0
|
96 $varToken = $stackPtr;
|
Chris@0
|
97 // Find variable names until we hit a semicolon.
|
Chris@0
|
98 $ignore = PHP_CodeSniffer_Tokens::$emptyTokens;
|
Chris@0
|
99 $ignore[] = T_SEMICOLON;
|
Chris@0
|
100 while (($varToken = $phpcsFile->findNext($ignore, ($varToken + 1), null, true, null, true)) !== false) {
|
Chris@0
|
101 if ($tokens[$varToken]['code'] === T_VARIABLE
|
Chris@0
|
102 && in_array($tokens[$varToken]['content'], $this->coreGlobals) === false
|
Chris@0
|
103 && $tokens[$varToken]['content']{1} !== '_'
|
Chris@0
|
104 ) {
|
Chris@0
|
105 $error = 'global variables should start with a single underscore followed by the module and another underscore';
|
Chris@0
|
106 $phpcsFile->addError($error, $varToken, 'GlobalUnderScore');
|
Chris@0
|
107 }
|
Chris@0
|
108 }
|
Chris@0
|
109
|
Chris@0
|
110 }//end process()
|
Chris@0
|
111
|
Chris@0
|
112
|
Chris@0
|
113 }//end class
|