3
final class ArcanistAliasFunctionXHPASTLinterRule
4
extends ArcanistXHPASTLinterRule {
8
public function getLintName() {
9
return pht('Alias Functions');
12
public function getLintSeverity() {
13
return ArcanistLintSeverity::SEVERITY_ADVICE;
16
public function process(XHPASTNode $root) {
17
$aliases = $this->getFunctionAliases();
18
$functions = $this->getFunctionCalls($root, array_keys($aliases));
20
foreach ($functions as $function) {
21
$function_name = $function->getChildByIndex(0);
23
$this->raiseLintAtNode(
25
pht('Alias functions should be avoided.'),
26
$aliases[phutil_utf8_strtolower($function_name->getConcreteString())]);
30
public function getFunctionAliases() {
34
'close' => 'closedir',
35
'com_get' => 'com_propget',
36
'com_propset' => 'com_propput',
37
'com_set' => 'com_propput',
39
'diskfreespace' => 'disk_free_space',
40
'doubleval' => 'floatval',
41
'drawarc' => 'swfshape_drawarc',
42
'drawcircle' => 'swfshape_drawcircle',
43
'drawcubic' => 'swfshape_drawcubic',
44
'drawcubicto' => 'swfshape_drawcubicto',
45
'drawcurve' => 'swfshape_drawcurve',
46
'drawcurveto' => 'swfshape_drawcurveto',
47
'drawglyph' => 'swfshape_drawglyph',
48
'drawline' => 'swfshape_drawline',
49
'drawlineto' => 'swfshape_drawlineto',
50
'fbsql' => 'fbsql_db_query',
52
'gzputs' => 'gzwrite',
53
'i18n_convert' => 'mb_convert_encoding',
54
'i18n_discover_encoding' => 'mb_detect_encoding',
55
'i18n_http_input' => 'mb_http_input',
56
'i18n_http_output' => 'mb_http_output',
57
'i18n_internal_encoding' => 'mb_internal_encoding',
58
'i18n_ja_jp_hantozen' => 'mb_convert_kana',
59
'i18n_mime_header_decode' => 'mb_decode_mimeheader',
60
'i18n_mime_header_encode' => 'mb_encode_mimeheader',
61
'imap_create' => 'imap_createmailbox',
62
'imap_fetchtext' => 'imap_body',
63
'imap_getmailboxes' => 'imap_list_full',
64
'imap_getsubscribed' => 'imap_lsub_full',
65
'imap_header' => 'imap_headerinfo',
66
'imap_listmailbox' => 'imap_list',
67
'imap_listsubscribed' => 'imap_lsub',
68
'imap_rename' => 'imap_renamemailbox',
69
'imap_scan' => 'imap_listscan',
70
'imap_scanmailbox' => 'imap_listscan',
71
'ini_alter' => 'ini_set',
72
'is_double' => 'is_float',
73
'is_integer' => 'is_int',
74
'is_long' => 'is_int',
75
'is_real' => 'is_float',
76
'is_writeable' => 'is_writable',
78
'key_exists' => 'array_key_exists',
79
'ldap_close' => 'ldap_unbind',
80
'magic_quotes_runtime' => 'set_magic_quotes_runtime',
81
'mbstrcut' => 'mb_strcut',
82
'mbstrlen' => 'mb_strlen',
83
'mbstrpos' => 'mb_strpos',
84
'mbstrrpos' => 'mb_strrpos',
85
'mbsubstr' => 'mb_substr',
86
'ming_setcubicthreshold' => 'ming_setCubicThreshold',
87
'ming_setscale' => 'ming_setScale',
88
'msql' => 'msql_db_query',
89
'msql_createdb' => 'msql_create_db',
90
'msql_dbname' => 'msql_result',
91
'msql_dropdb' => 'msql_drop_db',
92
'msql_fieldflags' => 'msql_field_flags',
93
'msql_fieldlen' => 'msql_field_len',
94
'msql_fieldname' => 'msql_field_name',
95
'msql_fieldtable' => 'msql_field_table',
96
'msql_fieldtype' => 'msql_field_type',
97
'msql_freeresult' => 'msql_free_result',
98
'msql_listdbs' => 'msql_list_dbs',
99
'msql_listfields' => 'msql_list_fields',
100
'msql_listtables' => 'msql_list_tables',
101
'msql_numfields' => 'msql_num_fields',
102
'msql_numrows' => 'msql_num_rows',
103
'msql_regcase' => 'sql_regcase',
104
'msql_selectdb' => 'msql_select_db',
105
'msql_tablename' => 'msql_result',
106
'mssql_affected_rows' => 'sybase_affected_rows',
107
'mssql_close' => 'sybase_close',
108
'mssql_connect' => 'sybase_connect',
109
'mssql_data_seek' => 'sybase_data_seek',
110
'mssql_fetch_array' => 'sybase_fetch_array',
111
'mssql_fetch_field' => 'sybase_fetch_field',
112
'mssql_fetch_object' => 'sybase_fetch_object',
113
'mssql_fetch_row' => 'sybase_fetch_row',
114
'mssql_field_seek' => 'sybase_field_seek',
115
'mssql_free_result' => 'sybase_free_result',
116
'mssql_get_last_message' => 'sybase_get_last_message',
117
'mssql_min_client_severity' => 'sybase_min_client_severity',
118
'mssql_min_error_severity' => 'sybase_min_error_severity',
119
'mssql_min_message_severity' => 'sybase_min_message_severity',
120
'mssql_min_server_severity' => 'sybase_min_server_severity',
121
'mssql_num_fields' => 'sybase_num_fields',
122
'mssql_num_rows' => 'sybase_num_rows',
123
'mssql_pconnect' => 'sybase_pconnect',
124
'mssql_query' => 'sybase_query',
125
'mssql_result' => 'sybase_result',
126
'mssql_select_db' => 'sybase_select_db',
127
'multcolor' => 'swfdisplayitem_multColor',
128
'mysql' => 'mysql_db_query',
129
'mysql_createdb' => 'mysql_create_db',
130
'mysql_db_name' => 'mysql_result',
131
'mysql_dbname' => 'mysql_result',
132
'mysql_dropdb' => 'mysql_drop_db',
133
'mysql_fieldflags' => 'mysql_field_flags',
134
'mysql_fieldlen' => 'mysql_field_len',
135
'mysql_fieldname' => 'mysql_field_name',
136
'mysql_fieldtable' => 'mysql_field_table',
137
'mysql_fieldtype' => 'mysql_field_type',
138
'mysql_freeresult' => 'mysql_free_result',
139
'mysql_listdbs' => 'mysql_list_dbs',
140
'mysql_listfields' => 'mysql_list_fields',
141
'mysql_listtables' => 'mysql_list_tables',
142
'mysql_numfields' => 'mysql_num_fields',
143
'mysql_numrows' => 'mysql_num_rows',
144
'mysql_selectdb' => 'mysql_select_db',
145
'mysql_tablename' => 'mysql_result',
146
'ociassignelem' => 'OCI-Collection::assignElem',
147
'ocibindbyname' => 'oci_bind_by_name',
148
'ocicancel' => 'oci_cancel',
149
'ocicloselob' => 'OCI-Lob::close',
150
'ocicollappend' => 'OCI-Collection::append',
151
'ocicollassign' => 'OCI-Collection::assign',
152
'ocicollmax' => 'OCI-Collection::max',
153
'ocicollsize' => 'OCI-Collection::size',
154
'ocicolltrim' => 'OCI-Collection::trim',
155
'ocicolumnisnull' => 'oci_field_is_null',
156
'ocicolumnname' => 'oci_field_name',
157
'ocicolumnprecision' => 'oci_field_precision',
158
'ocicolumnscale' => 'oci_field_scale',
159
'ocicolumnsize' => 'oci_field_size',
160
'ocicolumntype' => 'oci_field_type',
161
'ocicolumntyperaw' => 'oci_field_type_raw',
162
'ocicommit' => 'oci_commit',
163
'ocidefinebyname' => 'oci_define_by_name',
164
'ocierror' => 'oci_error',
165
'ociexecute' => 'oci_execute',
166
'ocifetch' => 'oci_fetch',
167
'ocifetchinto' => 'oci_fetch_array(),',
168
'ocifetchstatement' => 'oci_fetch_all',
169
'ocifreecollection' => 'OCI-Collection::free',
170
'ocifreecursor' => 'oci_free_statement',
171
'ocifreedesc' => 'oci_free_descriptor',
172
'ocifreestatement' => 'oci_free_statement',
173
'ocigetelem' => 'OCI-Collection::getElem',
174
'ociinternaldebug' => 'oci_internal_debug',
175
'ociloadlob' => 'OCI-Lob::load',
176
'ocilogon' => 'oci_connect',
177
'ocinewcollection' => 'oci_new_collection',
178
'ocinewcursor' => 'oci_new_cursor',
179
'ocinewdescriptor' => 'oci_new_descriptor',
180
'ocinlogon' => 'oci_new_connect',
181
'ocinumcols' => 'oci_num_fields',
182
'ociparse' => 'oci_parse',
183
'ocipasswordchange' => 'oci_password_change',
184
'ociplogon' => 'oci_pconnect',
185
'ociresult' => 'oci_result',
186
'ocirollback' => 'oci_rollback',
187
'ocisavelob' => 'OCI-Lob::save',
188
'ocisavelobfile' => 'OCI-Lob::import',
189
'ociserverversion' => 'oci_server_version',
190
'ocisetprefetch' => 'oci_set_prefetch',
191
'ocistatementtype' => 'oci_statement_type',
192
'ociwritelobtofile' => 'OCI-Lob::export',
193
'ociwritetemporarylob' => 'OCI-Lob::writeTemporary',
194
'odbc_do' => 'odbc_exec',
195
'odbc_field_precision' => 'odbc_field_len',
196
'pdf_add_outline' => 'pdf_add_bookmark',
197
'pg_clientencoding' => 'pg_client_encoding',
198
'pg_setclientencoding' => 'pg_set_client_encoding',
200
'recode' => 'recode_string',
201
'show_source' => 'highlight_file',
203
'snmpwalkoid' => 'snmprealwalk',
204
'strchr' => 'strstr',
205
'streammp3' => 'swfmovie_streamMp3',
206
'swfaction' => 'swfaction_init',
207
'swfbitmap' => 'swfbitmap_init',
208
'swfbutton' => 'swfbutton_init',
209
'swffill' => 'swffill_init',
210
'swffont' => 'swffont_init',
211
'swfgradient' => 'swfgradient_init',
212
'swfmorph' => 'swfmorph_init',
213
'swfmovie' => 'swfmovie_init',
214
'swfshape' => 'swfshape_init',
215
'swfsprite' => 'swfsprite_init',
216
'swftext' => 'swftext_init',
217
'swftextfield' => 'swftextfield_init',
218
'xptr_new_context' => 'xpath_new_context',