From 264d915e1356ce83d14b3600a6bf40b8d463c3e5 Mon Sep 17 00:00:00 2001 From: epriestley Date: Tue, 12 Jun 2012 12:54:26 -0700 Subject: [PATCH] Include common extensions in symbol mapper Summary: Spamming everyone who got bitten by this. We upgraded the libphutil library system recently, but the "use of undeclared function" lint check used to run only on files you touched and now runs on every file in every library you use. This means that if you don't have pcntl or ldap installed, you'll get errors about use of functions from them on every change. Instead, ship with a list of functions which are provided by extensions that we'll ignore when calculating dependencies, so not having pcntl doesn't mean you have to excuse through irrelevant errrors every time. Test Plan: Ran script with an unknown function, got it in the map; added it to the extension list, it vanished from the map. Reviewers: vrana, btrahan, allenjohnashton, ddfisher, keebuhm, phleet, nodren Reviewed By: vrana CC: aran Maniphest Tasks: T1347 Differential Revision: https://secure.phabricator.com/D2728 --- scripts/php_extension_functions.txt | 264 ++++++++++++++++++++++++++++ scripts/phutil_symbols.php | 10 ++ 2 files changed, 274 insertions(+) create mode 100644 scripts/php_extension_functions.txt diff --git a/scripts/php_extension_functions.txt b/scripts/php_extension_functions.txt new file mode 100644 index 00000000..a503cbd4 --- /dev/null +++ b/scripts/php_extension_functions.txt @@ -0,0 +1,264 @@ +apc_add +apc_bin_dump +apc_bin_dumpfile +apc_bin_load +apc_bin_loadfile +apc_cache_info +apc_cas +apc_clear_cache +apc_compile_file +apc_dec +apc_define_constants +apc_delete +apc_delete_file +apc_exists +apc_fetch +apc_inc +apc_load_constants +apc_sma_info +apc_store +bcadd +bccomp +bcdiv +bcmod +bcmul +bcpow +bcpowmod +bcscale +bcsqrt +bcsub +curl_close +curl_copy_handle +curl_errno +curl_error +curl_escape +curl_exec +curl_getinfo +curl_init +curl_multi_add_handle +curl_multi_close +curl_multi_exec +curl_multi_getcontent +curl_multi_info_read +curl_multi_init +curl_multi_remove_handle +curl_multi_select +curl_reset +curl_setopt +curl_setopt_array +curl_share_close +curl_share_init +curl_share_setopt +curl_unescape +curl_version +image2wbmp +image_type_to_extension +image_type_to_mime_type +imagealphablending +imageantialias +imagearc +imagechar +imagecharup +imagecolorallocate +imagecolorallocatealpha +imagecolorat +imagecolorclosest +imagecolorclosestalpha +imagecolorclosesthwb +imagecolordeallocate +imagecolorexact +imagecolorexactalpha +imagecolormatch +imagecolorresolve +imagecolorresolvealpha +imagecolorset +imagecolorsforindex +imagecolorstotal +imagecolortransparent +imageconvolution +imagecopy +imagecopymerge +imagecopymergegray +imagecopyresampled +imagecopyresized +imagecreate +imagecreatefromgd +imagecreatefromgd2 +imagecreatefromgd2part +imagecreatefromgif +imagecreatefromjpeg +imagecreatefrompng +imagecreatefromstring +imagecreatefromwbmp +imagecreatefromxbm +imagecreatetruecolor +imagedashedline +imagedestroy +imageellipse +imagefill +imagefilledarc +imagefilledellipse +imagefilledpolygon +imagefilledrectangle +imagefilltoborder +imagefilter +imagefontheight +imagefontwidth +imagegammacorrect +imagegd +imagegd2 +imagegif +imageinterlace +imageistruecolor +imagejpeg +imagelayereffect +imageline +imageloadfont +imagepalettecopy +imagepng +imagepolygon +imagerectangle +imagerotate +imagesavealpha +imagesetbrush +imagesetpixel +imagesetstyle +imagesetthickness +imagesettile +imagestring +imagestringup +imagesx +imagesy +imagetruecolortopalette +imagetypes +imagewbmp +imagexbm +ldap_connect +ldap_close +ldap_bind +ldap_sasl_bind +ldap_unbind +ldap_read +ldap_list +ldap_search +ldap_free_result +ldap_count_entries +ldap_first_entry +ldap_next_entry +ldap_get_entries +ldap_first_attribute +ldap_next_attribute +ldap_get_attributes +ldap_get_values +ldap_get_values_len +ldap_get_dn +ldap_explode_dn +ldap_dn2ufn +ldap_add +ldap_delete +ldap_modify +ldap_mod_add +ldap_mod_replace +ldap_mod_del +ldap_errno +ldap_err2str +ldap_error +ldap_compare +ldap_sort +ldap_rename +ldap_get_option +ldap_set_option +ldap_first_reference +ldap_next_reference +ldap_parse_reference +ldap_parse_result +ldap_start_tls +ldap_set_rebind_proc +ldap_control_paged_result +ldap_control_paged_result_response +pcntl_fork +pcntl_waitpid +pcntl_wait +pcntl_signal +pcntl_signal_dispatch +pcntl_wifexited +pcntl_wifstopped +pcntl_wifsignaled +pcntl_wexitstatus +pcntl_wtermsig +pcntl_wstopsig +pcntl_exec +pcntl_alarm +pcntl_get_last_error +pcntl_errno +pcntl_strerror +pcntl_getpriority +pcntl_setpriority +pcntl_sigprocmask +posix_kill +posix_getpid +posix_getppid +posix_getuid +posix_setuid +posix_geteuid +posix_seteuid +posix_getgid +posix_setgid +posix_getegid +posix_setegid +posix_getgroups +posix_getlogin +posix_getpgrp +posix_setsid +posix_setpgid +posix_getpgid +posix_getsid +posix_uname +posix_times +posix_ctermid +posix_ttyname +posix_isatty +posix_getcwd +posix_mkfifo +posix_mknod +posix_access +posix_getgrnam +posix_getgrgid +posix_getpwnam +posix_getpwuid +posix_getrlimit +posix_get_last_error +posix_errno +posix_strerror +posix_initgroups +socket_accept +socket_bind +socket_clear_error +socket_close +socket_connect +socket_create +socket_create_listen +socket_create_pair +socket_get_option +socket_get_status +socket_getopt +socket_getpeername +socket_getsockname +socket_import_stream +socket_last_error +socket_listen +socket_read +socket_recv +socket_recvfrom +socket_select +socket_send +socket_sendto +socket_set_block +socket_set_blocking +socket_set_nonblock +socket_set_option +socket_set_timeout +socket_setopt +socket_shutdown +socket_strerror +socket_write diff --git a/scripts/phutil_symbols.php b/scripts/phutil_symbols.php index 28253596..740ce680 100755 --- a/scripts/phutil_symbols.php +++ b/scripts/phutil_symbols.php @@ -415,6 +415,16 @@ function phutil_symbols_get_builtins() { $builtin_functions = get_defined_functions(); $builtin_functions = $builtin_functions['internal']; + // Developers may not have every extension that a library potentially uses + // installed. We supplement the list of declared functions with a list of + // known extension functions to avoid raising false positives just because + // you don't have pcntl, etc. + $list = dirname(__FILE__).'/php_extension_functions.txt'; + $extension_functions = file_get_contents($list); + $extension_functions = explode("\n", trim($extension_functions)); + + $builtin_functions = array_merge($builtin_functions, $extension_functions); + return array( 'class' => array_fill_keys($builtin_classes, true) + array( 'PhutilBootloader' => true,