comparison vendor/drupal/coder/coder_sniffer/Drupal/Sniffs/Semantics/FunctionAliasSniff.php @ 0:4c8ae668cc8c

Initial import (non-working)
author Chris Cannam
date Wed, 29 Nov 2017 16:09:58 +0000
parents
children 129ea1e6d783
comparison
equal deleted inserted replaced
-1:000000000000 0:4c8ae668cc8c
1 <?php
2 /**
3 * Drupal_Sniffs_Semantics_FunctionAliasSniff
4 *
5 * @category PHP
6 * @package PHP_CodeSniffer
7 * @link http://pear.php.net/package/PHP_CodeSniffer
8 */
9
10 /**
11 * Checks that no PHP function name aliases are used.
12 *
13 * @category PHP
14 * @package PHP_CodeSniffer
15 * @link http://pear.php.net/package/PHP_CodeSniffer
16 */
17 class Drupal_Sniffs_Semantics_FunctionAliasSniff extends Drupal_Sniffs_Semantics_FunctionCall
18 {
19
20 /**
21 * Holds all PHP function name aliases (keys) and originals (values). See
22 * http://php.net/manual/en/aliases.php
23 *
24 * @var array
25 */
26 protected $aliases = array(
27 '_' => 'gettext',
28 'chop' => 'rtrim',
29 'close' => 'closedir',
30 'com_get' => 'com_propget',
31 'com_propset' => 'com_propput',
32 'com_set' => 'com_propput',
33 'die' => 'exit',
34 'diskfreespace' => 'disk_free_space',
35 'doubleval' => 'floatval',
36 'fbsql' => 'fbsql_db_query',
37 'fputs' => 'fwrite',
38 'gzputs' => 'gzwrite',
39 'i18n_convert' => 'mb_convert_encoding',
40 'i18n_discover_encoding' => 'mb_detect_encoding',
41 'i18n_http_input' => 'mb_http_input',
42 'i18n_http_output' => 'mb_http_output',
43 'i18n_internal_encoding' => 'mb_internal_encoding',
44 'i18n_ja_jp_hantozen' => 'mb_convert_kana',
45 'i18n_mime_header_decode' => 'mb_decode_mimeheader',
46 'i18n_mime_header_encode' => 'mb_encode_mimeheader',
47 'imap_create' => 'imap_createmailbox',
48 'imap_fetchtext' => 'imap_body',
49 'imap_getmailboxes' => 'imap_list_full',
50 'imap_getsubscribed' => 'imap_lsub_full',
51 'imap_header' => 'imap_headerinfo',
52 'imap_listmailbox' => 'imap_list',
53 'imap_listsubscribed' => 'imap_lsub',
54 'imap_rename' => 'imap_renamemailbox',
55 'imap_scan' => 'imap_listscan',
56 'imap_scanmailbox' => 'imap_listscan',
57 'ini_alter' => 'ini_set',
58 'is_double' => 'is_float',
59 'is_integer' => 'is_int',
60 'is_long' => 'is_int',
61 'is_real' => 'is_float',
62 'is_writeable' => 'is_writable',
63 'join' => 'implode',
64 'key_exists' => 'array_key_exists',
65 'ldap_close' => 'ldap_unbind',
66 'magic_quotes_runtime' => 'set_magic_quotes_runtime',
67 'mbstrcut' => 'mb_strcut',
68 'mbstrlen' => 'mb_strlen',
69 'mbstrpos' => 'mb_strpos',
70 'mbstrrpos' => 'mb_strrpos',
71 'mbsubstr' => 'mb_substr',
72 'ming_setcubicthreshold' => 'ming_setCubicThreshold',
73 'ming_setscale' => 'ming_setScale',
74 'msql' => 'msql_db_query',
75 'msql_createdb' => 'msql_create_db',
76 'msql_dbname' => 'msql_result',
77 'msql_dropdb' => 'msql_drop_db',
78 'msql_fieldflags' => 'msql_field_flags',
79 'msql_fieldlen' => 'msql_field_len',
80 'msql_fieldname' => 'msql_field_name',
81 'msql_fieldtable' => 'msql_field_table',
82 'msql_fieldtype' => 'msql_field_type',
83 'msql_freeresult' => 'msql_free_result',
84 'msql_listdbs' => 'msql_list_dbs',
85 'msql_listfields' => 'msql_list_fields',
86 'msql_listtables' => 'msql_list_tables',
87 'msql_numfields' => 'msql_num_fields',
88 'msql_numrows' => 'msql_num_rows',
89 'msql_regcase' => 'sql_regcase',
90 'msql_selectdb' => 'msql_select_db',
91 'msql_tablename' => 'msql_result',
92 'mssql_affected_rows' => 'sybase_affected_rows',
93 'mssql_affected_rows' => 'sybase_affected_rows',
94 'mssql_close' => 'sybase_close',
95 'mssql_close' => 'sybase_close',
96 'mssql_connect' => 'sybase_connect',
97 'mssql_connect' => 'sybase_connect',
98 'mssql_data_seek' => 'sybase_data_seek',
99 'mssql_data_seek' => 'sybase_data_seek',
100 'mssql_fetch_array' => 'sybase_fetch_array',
101 'mssql_fetch_array' => 'sybase_fetch_array',
102 'mssql_fetch_field' => 'sybase_fetch_field',
103 'mssql_fetch_field' => 'sybase_fetch_field',
104 'mssql_fetch_object' => 'sybase_fetch_object',
105 'mssql_fetch_object' => 'sybase_fetch_object',
106 'mssql_fetch_row' => 'sybase_fetch_row',
107 'mssql_fetch_row' => 'sybase_fetch_row',
108 'mssql_field_seek' => 'sybase_field_seek',
109 'mssql_field_seek' => 'sybase_field_seek',
110 'mssql_free_result' => 'sybase_free_result',
111 'mssql_free_result' => 'sybase_free_result',
112 'mssql_get_last_message' => 'sybase_get_last_message',
113 'mssql_get_last_message' => 'sybase_get_last_message',
114 'mssql_min_client_severity' => 'sybase_min_client_severity',
115 'mssql_min_error_severity' => 'sybase_min_error_severity',
116 'mssql_min_message_severity' => 'sybase_min_message_severity',
117 'mssql_min_server_severity' => 'sybase_min_server_severity',
118 'mssql_num_fields' => 'sybase_num_fields',
119 'mssql_num_fields' => 'sybase_num_fields',
120 'mssql_num_rows' => 'sybase_num_rows',
121 'mssql_num_rows' => 'sybase_num_rows',
122 'mssql_pconnect' => 'sybase_pconnect',
123 'mssql_pconnect' => 'sybase_pconnect',
124 'mssql_query' => 'sybase_query',
125 'mssql_query' => 'sybase_query',
126 'mssql_result' => 'sybase_result',
127 'mssql_result' => 'sybase_result',
128 'mssql_select_db' => 'sybase_select_db',
129 'mssql_select_db' => 'sybase_select_db',
130 'mysql' => 'mysql_db_query',
131 'mysql_createdb' => 'mysql_create_db',
132 'mysql_db_name' => 'mysql_result',
133 'mysql_dbname' => 'mysql_result',
134 'mysql_dropdb' => 'mysql_drop_db',
135 'mysql_fieldflags' => 'mysql_field_flags',
136 'mysql_fieldlen' => 'mysql_field_len',
137 'mysql_fieldname' => 'mysql_field_name',
138 'mysql_fieldtable' => 'mysql_field_table',
139 'mysql_fieldtype' => 'mysql_field_type',
140 'mysql_freeresult' => 'mysql_free_result',
141 'mysql_listdbs' => 'mysql_list_dbs',
142 'mysql_listfields' => 'mysql_list_fields',
143 'mysql_listtables' => 'mysql_list_tables',
144 'mysql_numfields' => 'mysql_num_fields',
145 'mysql_numrows' => 'mysql_num_rows',
146 'mysql_selectdb' => 'mysql_select_db',
147 'mysql_tablename' => 'mysql_result',
148 'oci8append' => 'ocicollappend',
149 'oci8assign' => 'ocicollassign',
150 'oci8assignelem' => 'ocicollassignelem',
151 'oci8close' => 'ocicloselob',
152 'oci8free' => 'ocifreecoll',
153 'oci8free' => 'ocifreedesc',
154 'oci8getelem' => 'ocicollgetelem',
155 'oci8load' => 'ociloadlob',
156 'oci8max' => 'ocicollmax',
157 'oci8ocifreecursor' => 'ocifreestatement',
158 'oci8save' => 'ocisavelob',
159 'oci8savefile' => 'ocisavelobfile',
160 'oci8size' => 'ocicollsize',
161 'oci8trim' => 'ocicolltrim',
162 'oci8writetemporary' => 'ociwritetemporarylob',
163 'oci8writetofile' => 'ociwritelobtofile',
164 'odbc_do' => 'odbc_exec',
165 'odbc_field_precision' => 'odbc_field_len',
166 'pdf_add_outline' => 'pdf_add_bookmark',
167 'pg_clientencoding' => 'pg_client_encoding',
168 'pg_setclientencoding' => 'pg_set_client_encoding',
169 'pos' => 'current',
170 'recode' => 'recode_string',
171 'show_source' => 'highlight_file',
172 'sizeof' => 'count',
173 'snmpwalkoid' => 'snmprealwalk',
174 'strchr' => 'strstr',
175 'xptr_new_context' => 'xpath_new_context',
176 );
177
178
179 /**
180 * Returns an array of function names this test wants to listen for.
181 *
182 * @return array
183 */
184 public function registerFunctionNames()
185 {
186 return array_keys($this->aliases);
187
188 }//end registerFunctionNames()
189
190
191 /**
192 * Processes this function call.
193 *
194 * @param PHP_CodeSniffer_File $phpcsFile The file being scanned.
195 * @param int $stackPtr The position of the function call in
196 * the stack.
197 * @param int $openBracket The position of the opening
198 * parenthesis in the stack.
199 * @param int $closeBracket The position of the closing
200 * parenthesis in the stack.
201 *
202 * @return void
203 */
204 public function processFunctionCall(
205 PHP_CodeSniffer_File $phpcsFile,
206 $stackPtr,
207 $openBracket,
208 $closeBracket
209 ) {
210 $tokens = $phpcsFile->getTokens();
211 $error = '%s() is a function name alias, use %s() instead';
212 $name = $tokens[$stackPtr]['content'];
213 $data = array(
214 $name,
215 $this->aliases[$name],
216 );
217 $phpcsFile->addError($error, $stackPtr, 'FunctionAlias', $data);
218
219 }//end processFunctionCall()
220
221
222 }//end class