annotate vendor/drupal/coder/coder_sniffer/Drupal/Sniffs/Semantics/FunctionAliasSniff.php @ 19:fa3358dc1485 tip

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