X-Git-Url: https://git.heureux-cyclage.org/?p=lhc%2Fweb%2Fwiklou.git;a=blobdiff_plain;f=.phan%2Fconfig.php;h=0fdefe054d512bee9399d7c6fe5e613d9676cb67;hp=fe63e474b9fb01b542377e518fa66d902b790dea;hb=af80076034fb734d652eb043c523c1d8df974e51;hpb=8a4917968baece3fccf9428ea7fe7e71be5b3858 diff --git a/.phan/config.php b/.phan/config.php index fe63e474b9..0fdefe054d 100644 --- a/.phan/config.php +++ b/.phan/config.php @@ -32,21 +32,36 @@ $cfg['file_list'] = array_merge( class_exists( PHPUnit_TextUI_Command::class ) ? [] : [ '.phan/stubs/phpunit4.php' ], class_exists( ProfilerExcimer::class ) ? [] : [ '.phan/stubs/excimer.php' ], [ - 'maintenance/cleanupTable.inc', - 'maintenance/CodeCleanerGlobalsPass.inc', - 'maintenance/commandLine.inc', - 'maintenance/sqlite.inc', - 'maintenance/userDupes.inc', - 'maintenance/language/checkLanguage.inc', - 'maintenance/language/languages.inc', + // This makes constants and globals known to Phan before processing all other files. + // You can check the parser order with --dump-parsed-file-list + 'includes/Defines.php', + // @todo This isn't working yet, see globals_type_map below + // 'includes/DefaultSettings.php', + // 'includes/Setup.php', ] ); +$cfg['exclude_file_list'] = array_merge( + $cfg['exclude_file_list'], + [ + // This file has invalid PHP syntax + 'vendor/squizlabs/php_codesniffer/src/Standards/PSR2/Tests/Methods/MethodDeclarationUnitTest.inc', + ] +); + +$cfg['analyzed_file_extensions'] = array_merge( + $cfg['analyzed_file_extensions'] ?? [ 'php' ], + [ 'inc' ] +); + $cfg['autoload_internal_extension_signatures'] = [ + 'dom' => '.phan/internal_stubs/dom.phan_php', 'imagick' => '.phan/internal_stubs/imagick.phan_php', + 'intl' => '.phan/internal_stubs/intl.phan_php', 'memcached' => '.phan/internal_stubs/memcached.phan_php', 'oci8' => '.phan/internal_stubs/oci8.phan_php', 'pcntl' => '.phan/internal_stubs/pcntl.phan_php', + 'pgsql' => '.phan/internal_stubs/pgsql.phan_php', 'redis' => '.phan/internal_stubs/redis.phan_php', 'sockets' => '.phan/internal_stubs/sockets.phan_php', 'sqlsrv' => '.phan/internal_stubs/sqlsrv.phan_php', @@ -65,7 +80,7 @@ $cfg['directory_list'] = [ $cfg['exclude_analysis_directory_list'] = [ 'vendor/', - '.phan/stubs/', + '.phan/', // The referenced classes are not available in vendor, only when // included from composer. 'includes/composer/', @@ -73,25 +88,33 @@ $cfg['exclude_analysis_directory_list'] = [ 'maintenance/language/', // External class 'includes/libs/jsminplus.php', + // External class + 'includes/libs/objectcache/utils/MemcachedClient.php', ]; +// NOTE: If you're facing an issue which you cannot easily fix, DO NOT add it here. Suppress it +// either in-line with @phan-suppress-next-line and similar, at block-level (via @suppress), or at +// file-level (with @phan-file-suppress), so that it stays enabled for the rest of the codebase. $cfg['suppress_issue_types'] = array_merge( $cfg['suppress_issue_types'], [ // approximate error count: 19 - "PhanParamReqAfterOpt", // False positives with nullables, ref phan issue #3159 + "PhanParamReqAfterOpt", // False positives with nullables (phan issue #3159). Use real nullables + //after dropping HHVM // approximate error count: 110 "PhanParamTooMany", // False positives with variargs. Unsuppress after dropping HHVM - - // approximate error count: 22 - "PhanAccessMethodInternal", - // approximate error count: 36 - "PhanUndeclaredConstant", - // approximate error count: 60 - "PhanTypeMismatchArgument", - // approximate error count: 752 - "PhanUndeclaredProperty", ] ); +// This helps a lot in discovering bad code, but unfortunately it will always fail for +// hooks + pass by reference, see phan issue #2943. +// @todo Enable when the issue above is resolved and we update our config! +$cfg['redundant_condition_detection'] = false; + +// Do not use aliases in core. +// Use the correct name, because we don't need backward compatibility +$cfg['enable_class_alias_support'] = false; + $cfg['ignore_undeclared_variables_in_global_scope'] = true; +// @todo It'd be great if we could just make phan read these from DefaultSettings, to avoid +// duplicating the types. $cfg['globals_type_map'] = array_merge( $cfg['globals_type_map'], [ 'IP' => 'string', 'wgGalleryOptions' => 'array', @@ -110,6 +133,10 @@ $cfg['globals_type_map'] = array_merge( $cfg['globals_type_map'], [ 'wgVirtualRestConfig' => 'array', 'wgWANObjectCaches' => 'array[]', 'wgLocalInterwikis' => 'string[]', + 'wgDebugLogGroups' => 'string|false|array{destination:string,sample?:int,level:int}', + 'wgCookiePrefix' => 'string|false', + 'wgOut' => 'OutputPage', + 'wgExtraNamespaces' => 'string[]', ] ); return $cfg;