Merge "FileJournal tests"
[lhc/web/wiklou.git] / .phan / config.php
1 <?php
2 /**
3 * This program is free software; you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation; either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License along
14 * with this program; if not, write to the Free Software Foundation, Inc.,
15 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
16 * http://www.gnu.org/copyleft/gpl.html
17 *
18 * @file
19 */
20
21 $cfg = require __DIR__ . '/../vendor/mediawiki/mediawiki-phan-config/src/config.php';
22
23 $cfg['file_list'] = array_merge(
24 $cfg['file_list'],
25 function_exists( 'register_postsend_function' ) ? [] : [ '.phan/stubs/hhvm.php' ],
26 function_exists( 'wikidiff2_do_diff' ) ? [] : [ '.phan/stubs/wikidiff.php' ],
27 class_exists( PEAR::class ) ? [] : [ '.phan/stubs/mail.php' ],
28 defined( 'PASSWORD_ARGON2I' ) ? [] : [ '.phan/stubs/password.php' ],
29 // Per composer.json, PHPUnit 6 is used for PHP 7.0+, PHPUnit 4 otherwise.
30 // Load the interface for the version of PHPUnit that isn't installed.
31 // Phan only supports PHP 7.0+ (and not HHVM), so we only need to stub PHPUnit 4.
32 class_exists( PHPUnit_TextUI_Command::class ) ? [] : [ '.phan/stubs/phpunit4.php' ],
33 class_exists( ProfilerExcimer::class ) ? [] : [ '.phan/stubs/excimer.php' ],
34 [
35 'maintenance/cleanupTable.inc',
36 'maintenance/CodeCleanerGlobalsPass.inc',
37 'maintenance/commandLine.inc',
38 'maintenance/sqlite.inc',
39 'maintenance/userDupes.inc',
40 'maintenance/language/checkLanguage.inc',
41 'maintenance/language/languages.inc',
42 ]
43 );
44
45 $cfg['autoload_internal_extension_signatures'] = [
46 'imagick' => '.phan/internal_stubs/imagick.phan_php',
47 'memcached' => '.phan/internal_stubs/memcached.phan_php',
48 'oci8' => '.phan/internal_stubs/oci8.phan_php',
49 'pcntl' => '.phan/internal_stubs/pcntl.phan_php',
50 'redis' => '.phan/internal_stubs/redis.phan_php',
51 'sockets' => '.phan/internal_stubs/sockets.phan_php',
52 'sqlsrv' => '.phan/internal_stubs/sqlsrv.phan_php',
53 'tideways' => '.phan/internal_stubs/tideways.phan_php',
54 ];
55
56 $cfg['directory_list'] = [
57 'includes/',
58 'languages/',
59 'maintenance/',
60 'mw-config/',
61 'resources/',
62 'vendor/',
63 '.phan/stubs/',
64 ];
65
66 $cfg['exclude_analysis_directory_list'] = [
67 'vendor/',
68 '.phan/stubs/',
69 // The referenced classes are not available in vendor, only when
70 // included from composer.
71 'includes/composer/',
72 // Directly references classes that only exist in Translate extension
73 'maintenance/language/',
74 // External class
75 'includes/libs/jsminplus.php',
76 ];
77
78 $cfg['suppress_issue_types'] = array_merge( $cfg['suppress_issue_types'], [
79 // approximate error count: 19
80 "PhanParamReqAfterOpt", // False positives with nullables, ref phan issue #3159
81 // approximate error count: 110
82 "PhanParamTooMany", // False positives with variargs. Unsuppress after dropping HHVM
83
84 // approximate error count: 22
85 "PhanAccessMethodInternal",
86 // approximate error count: 36
87 "PhanUndeclaredConstant",
88 // approximate error count: 60
89 "PhanTypeMismatchArgument",
90 // approximate error count: 219
91 "PhanUndeclaredMethod",
92 // approximate error count: 752
93 "PhanUndeclaredProperty",
94 ] );
95
96 $cfg['ignore_undeclared_variables_in_global_scope'] = true;
97 $cfg['globals_type_map'] = array_merge( $cfg['globals_type_map'], [
98 'IP' => 'string',
99 'wgGalleryOptions' => 'array',
100 'wgDummyLanguageCodes' => 'string[]',
101 'wgNamespaceProtection' => 'array<string,string|string[]>',
102 'wgNamespaceAliases' => 'array<string,int>',
103 'wgLockManagers' => 'array[]',
104 'wgForeignFileRepos' => 'array[]',
105 'wgDefaultUserOptions' => 'array',
106 'wgSkipSkins' => 'string[]',
107 'wgLogTypes' => 'string[]',
108 'wgLogNames' => 'array<string,string>',
109 'wgLogHeaders' => 'array<string,string>',
110 'wgLogActionsHandlers' => 'array<string,class-string>',
111 'wgPasswordPolicy' => 'array<string,array<string,string|array>>',
112 'wgVirtualRestConfig' => 'array<string,array>',
113 'wgWANObjectCaches' => 'array[]',
114 'wgLocalInterwikis' => 'string[]',
115 ] );
116
117 return $cfg;