Gently discourage LoadBalancerSingle/LBFactorySingle constructors
[mediawiki.git] / .phpcs.xml
blob1fadd18c56468b65d86bd487127ee65d86451951
1 <?xml version="1.0"?>
2 <ruleset name="MediaWiki">
3         <rule ref="./vendor/mediawiki/mediawiki-codesniffer/MediaWiki">
4                 <exclude name="Generic.ControlStructures.InlineControlStructure" />
5                 <exclude name="MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate" />
6                 <exclude name="MediaWiki.Commenting.FunctionComment.MissingDocumentationProtected" />
7                 <exclude name="MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic" />
8                 <exclude name="MediaWiki.Commenting.FunctionComment.WrongStyle" />
9                 <exclude name="MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate" />
10                 <exclude name="MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationProtected" />
11                 <exclude name="MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPublic" />
12                 <exclude name="MediaWiki.Commenting.PropertyDocumentation.MissingVar" />
13                 <exclude name="MediaWiki.Commenting.PropertyDocumentation.SpacingAfter" />
14                 <exclude name="MediaWiki.Commenting.PropertyDocumentation.WrongStyle" />
15                 <exclude name="MediaWiki.ControlStructures.AssignmentInControlStructures.AssignmentInControlStructures" />
16                 <exclude name="MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName" />
17                 <exclude name="MediaWiki.PHPUnit.AssertCount.NotUsed" />
18                 <exclude name="MediaWiki.Usage.DbrQueryUsage.DbrQueryFound" />
19                 <exclude name="MediaWiki.Usage.DeprecatedGlobalVariables.Deprecated$wgTitle" />
20                 <exclude name="MediaWiki.Usage.DeprecatedGlobalVariables.Deprecated$wgUser" />
21                 <exclude name="MediaWiki.Usage.DeprecatedGlobalVariables.Deprecated$wgVersion" />
22                 <exclude name="MediaWiki.Usage.ExtendClassUsage.FunctionConfigUsage" />
23                 <exclude name="MediaWiki.Usage.ExtendClassUsage.FunctionVarUsage" />
24                 <exclude name="MediaWiki.Usage.ForbiddenFunctions.is_resource" />
25                 <exclude name="MediaWiki.Usage.ForbiddenFunctions.passthru" />
26                 <exclude name="MediaWiki.Usage.SuperGlobalsUsage.SuperGlobals" />
27                 <exclude name="MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment" />
28                 <exclude name="PSR2.Classes.PropertyDeclaration.Multiple" />
29         </rule>
30         <rule ref="MediaWiki.NamingConventions.PrefixedGlobalFunctions">
31                 <properties>
32                         <!--
33                         includes/GlobalFunctions.php
34                         * mimeTypeMatch
35                         maintenance/language/transstat.php
36                         * showUsage
37                         maintenance/mcc.php
38                         * mccGetHelp
39                         * mccShowUsage
40                         maintenance/storage/moveToExternal.php
41                         * moveToExternal
42                         maintenance/storage/resolveStubs.php
43                         * resolveStub
44                         * resolveStubs
45                         tests/phpunit/includes/HooksTest.php
46                         * NothingFunction
47                         * NothingFunctionData
48                         tests/qunit/data/styleTest.css.php
49                         * cssfilter
50                         -->
51                         <property name="ignoreList" type="array" value="cssfilter,mccGetHelp,mccShowUsage,mimeTypeMatch,moveToExternal,NothingFunction,NothingFunctionData,resolveStub,resolveStubs,showUsage" />
52                 </properties>
53         </rule>
54         <rule ref="MediaWiki.NamingConventions.ValidGlobalName">
55                 <properties>
56                         <property name="ignoreList" type="array" value="$IP" />
57                 </properties>
58         </rule>
59         <rule ref="MediaWiki.NamingConventions.ValidGlobalName.allowedPrefix">
60                 <exclude-pattern>*/maintenance/doMaintenance\.php</exclude-pattern>
61                 <exclude-pattern>*/maintenance/mergeMessageFileList\.php</exclude-pattern>
62                 <exclude-pattern>*/maintenance/CommandLineInc\.php</exclude-pattern>
63                 <exclude-pattern>*/tests/phpunit/MediaWikiIntegrationTestCase\.php</exclude-pattern>
64         </rule>
65         <rule ref="Generic.Classes.DuplicateClassName.Found">
66                 <exclude-pattern>*/includes/libs/rdbms/dbal/MWPostgreSqlPlatformCompat\.php</exclude-pattern>
67         </rule>
68         <rule ref="Generic.Files.LineLength">
69                 <exclude-pattern>*/languages/messages/*</exclude-pattern>
70         </rule>
71         <rule ref="MediaWiki.Files.ClassMatchesFilename.NotMatch">
72                 <!--
73                         Continue to allow existing violations, but enable the sniff to prevent
74                         any new occurrences.
75                 -->
76                 <exclude-pattern>*/includes/specials/SpecialMostimages\.php</exclude-pattern>
77                 <exclude-pattern>*/includes/specials/SpecialMovepage\.php</exclude-pattern>
78                 <exclude-pattern>*/includes/specials/SpecialRandompage\.php</exclude-pattern>
79                 <exclude-pattern>*/includes/specials/SpecialUserrights\.php</exclude-pattern>
80                 <exclude-pattern>*/includes/specials/SpecialWantedfiles\.php</exclude-pattern>
81                 <exclude-pattern>*/includes/specials/SpecialWantedpages\.php</exclude-pattern>
82                 <exclude-pattern>*/maintenance/benchmarks/bench_HTTP_HTTPS\.php</exclude-pattern>
83                 <exclude-pattern>*/maintenance/benchmarks/bench_Wikimedia_base_convert\.php</exclude-pattern>
84                 <exclude-pattern>*/maintenance/benchmarks/bench_delete_truncate\.php</exclude-pattern>
85                 <exclude-pattern>*/maintenance/benchmarks/bench_if_switch\.php</exclude-pattern>
86                 <exclude-pattern>*/maintenance/benchmarks/bench_utf8_title_check\.php</exclude-pattern>
87                 <exclude-pattern>*/maintenance/cleanupTitles\.php</exclude-pattern>
88                 <exclude-pattern>*/maintenance/edit\.php</exclude-pattern>
89                 <exclude-pattern>*/maintenance/findDeprecated\.php</exclude-pattern>
90                 <exclude-pattern>*/maintenance/getText\.php</exclude-pattern>
91                 <exclude-pattern>*/maintenance/importDump\.php</exclude-pattern>
92                 <exclude-pattern>*/maintenance/install\.php</exclude-pattern>
93                 <exclude-pattern>*/maintenance/invalidateUserSessions\.php</exclude-pattern>
94                 <exclude-pattern>*/maintenance/jsparse\.php</exclude-pattern>
95                 <exclude-pattern>*/maintenance/lag\.php</exclude-pattern>
96                 <exclude-pattern>*/maintenance/language/StatOutputs\.php</exclude-pattern>
97                 <exclude-pattern>*/maintenance/language/date-formats\.php</exclude-pattern>
98                 <exclude-pattern>*/maintenance/mysql\.php</exclude-pattern>
99                 <exclude-pattern>*/maintenance/parse\.php</exclude-pattern>
100                 <exclude-pattern>*/maintenance/preprocessorFuzzTest\.php</exclude-pattern>
101                 <exclude-pattern>*/maintenance/rebuildImages\.php</exclude-pattern>
102                 <exclude-pattern>*/maintenance/renderDump\.php</exclude-pattern>
103                 <exclude-pattern>*/maintenance/shell\.php</exclude-pattern>
104                 <exclude-pattern>*/maintenance/sql\.php</exclude-pattern>
105                 <exclude-pattern>*/maintenance/term/MWTerm\.php</exclude-pattern>
106                 <exclude-pattern>*/maintenance/update\.php</exclude-pattern>
107                 <exclude-pattern>*/maintenance/userOptions\.php</exclude-pattern>
108                 <exclude-pattern>*/maintenance/view\.php</exclude-pattern>
109                 <!-- Language converters use the pattern of 2 classes in one file -->
110                 <exclude-pattern>*/languages/*</exclude-pattern>
111                 <!-- Skip violations in some tests for now -->
112                 <exclude-pattern>*/tests/parser/*</exclude-pattern>
113                 <exclude-pattern>*/tests/phpunit/maintenance/*</exclude-pattern>
114                 <exclude-pattern>*/tests/phpunit/bootstrap\.php</exclude-pattern>
115                 <exclude-pattern>*/tests/phpunit/phpunit\.php</exclude-pattern>
116         </rule>
117         <rule ref="MediaWiki.Files.ClassMatchesFilename.WrongCase">
118                 <!--
119                         Continue to allow existing violations, but enable the sniff to prevent
120                         any new occurrences.
121                 -->
122                 <exclude-pattern>*/maintenance/language/alltrans\.php</exclude-pattern>
123                 <exclude-pattern>*/maintenance/language/digit2html\.php</exclude-pattern>
124                 <exclude-pattern>*/maintenance/language/langmemusage\.php</exclude-pattern>
125                 <exclude-pattern>*/maintenance/mctest\.php</exclude-pattern>
126                 <exclude-pattern>*/maintenance/mergeMessageFileList\.php</exclude-pattern>
127                 <exclude-pattern>*/maintenance/mwdocgen\.php</exclude-pattern>
128                 <exclude-pattern>*/maintenance/rebuildall\.php</exclude-pattern>
129                 <exclude-pattern>*/maintenance/rebuildmessages\.php</exclude-pattern>
130                 <exclude-pattern>*/maintenance/rebuildrecentchanges\.php</exclude-pattern>
131                 <exclude-pattern>*/maintenance/rebuildtextindex\.php</exclude-pattern>
132                 <exclude-pattern>*/maintenance/storage/checkStorage\.php</exclude-pattern>
133                 <exclude-pattern>*/maintenance/storage/recompressTracked\.php</exclude-pattern>
134                 <exclude-pattern>*/maintenance/storage/trackBlobs\.php</exclude-pattern>
135                 <!-- Skip violations in some tests for now -->
136                 <exclude-pattern>*/tests/phpunit/unit/includes/GlobalFunctions/*</exclude-pattern>
137                 <exclude-pattern>*/tests/phpunit/includes/GlobalFunctions/*</exclude-pattern>
138                 <exclude-pattern>*/tests/phpunit/maintenance/*</exclude-pattern>
139                 <exclude-pattern>*/tests/phpunit/integration/includes/GlobalFunctions/*</exclude-pattern>
140         </rule>
141         <rule ref="Generic.PHP.NoSilencedErrors.Discouraged">
142                 <!--
143                 Our normal policy of using Wikimedia\AtEase does not always make sense tests.
145                 AtEase cannot be cleanly used in tests that also use expectException() as
146                 the restoreWarnings() call would never be reached:
148                         $this->expectException( PasswordError::class );
149                         AtEase::suppressWarnings();
150                         $password->crypt( 'whatever' );
151                         AtEase::restoreWarnings();
153                 The above will stop at crypt(), as expected, and leave AtEase in a dirty
154                 state for unrelated tests.
156                 TODO: Stop using PHPUnit TestCase directly. Require with a structure test
157                 or with a high-level check in our run() hook, that all test cases use either
158                 MediaWikiUnitTestCase or MediaWikiIntegrationTestCase. Otherwise the check
159                 in MediaWikiTestCaseTrait can still be bypassed and cause a random failures.
161                 -->
162                 <exclude-pattern>*/tests/*</exclude-pattern>
163         </rule>
164         <rule ref="Generic.Files.OneObjectStructurePerFile.MultipleFound">
165                 <!--
166                         Continue to allow existing violations, but enable the sniff to prevent
167                         any new occurrences.
168                 -->
169                 <exclude-pattern>*/includes/libs/rdbms/dbal/MWPostgreSqlPlatformCompat\.php</exclude-pattern>
170                 <exclude-pattern>*/maintenance/dumpIterator\.php</exclude-pattern>
171                 <exclude-pattern>*/maintenance/findDeprecated\.php</exclude-pattern>
172                 <exclude-pattern>*/maintenance/storage/recompressTracked\.php</exclude-pattern>
173                 <exclude-pattern>*/maintenance/preprocessorFuzzTest\.php</exclude-pattern>
174                 <exclude-pattern>*/maintenance/language/StatOutputs\.php</exclude-pattern>
175                 <exclude-pattern>*/maintenance/language/generateCollationData\.php</exclude-pattern>
176                 <exclude-pattern>*/maintenance/term/MWTerm\.php</exclude-pattern>
177                 <!-- Language converters use the pattern of 2 classes in one file -->
178                 <exclude-pattern>*/languages/*</exclude-pattern>
179                 <!-- We don't care that much about violations in tests -->
180                 <exclude-pattern>*/tests/*</exclude-pattern>
181         </rule>
182         <rule ref="PSR2.Methods.MethodDeclaration.Underscore">
183                 <exclude-pattern>*/includes/StubObject\.php</exclude-pattern>
184                 <exclude-pattern>*/includes/StubUserLang\.php</exclude-pattern>
185         </rule>
186         <rule ref="MediaWiki.Usage.AssignmentInReturn.AssignmentInReturn">
187                 <exclude-pattern>*/tests/phpunit/*</exclude-pattern>
188         </rule>
189         <rule ref="MediaWiki.Usage.ForbiddenFunctions.escapeshellarg">
190                 <!--
191                         Continue to allow existing violations, but enable the sniff to prevent
192                         any new occurrences.
193                 -->
194                 <exclude-pattern>*/includes/libs/filebackend/FSFileBackend\.php</exclude-pattern>
195                 <exclude-pattern>*/includes/shell/Command\.php</exclude-pattern>
196                 <exclude-pattern>*/includes/shell/Shell\.php</exclude-pattern>
197         </rule>
198         <rule ref="MediaWiki.Usage.ForbiddenFunctions.popen">
199                 <!--
200                         Continue to allow existing violations, but enable the sniff to prevent
201                         any new occurrences.
202                 -->
203                 <exclude-pattern>*/includes/GlobalFunctions\.php</exclude-pattern>
204                 <exclude-pattern>*/includes/libs/filebackend/FSFileBackend\.php</exclude-pattern>
205                 <exclude-pattern>*/maintenance/includes/SevenZipStream\.php</exclude-pattern>
206                 <exclude-pattern>*/maintenance/populateImageSha1\.php</exclude-pattern>
207         </rule>
208         <rule ref="MediaWiki.Usage.ForbiddenFunctions.proc_open">
209                 <!--
210                         Continue to allow existing violations, but enable the sniff to prevent
211                         any new occurrences.
212                 -->
213                 <exclude-pattern>*/includes/export/DumpPipeOutput\.php</exclude-pattern>
214                 <exclude-pattern>*/includes/resourceloader/ResourceLoaderImage\.php</exclude-pattern>
215                 <exclude-pattern>*/includes/shell/Command\.php</exclude-pattern>
216                 <exclude-pattern>*/maintenance/includes/TextPassDumper\.php</exclude-pattern>
217                 <exclude-pattern>*/maintenance/mysql\.php</exclude-pattern>
218                 <exclude-pattern>*/maintenance/storage/recompressTracked\.php</exclude-pattern>
219                 <exclude-pattern>*/tests/parser/editTests\.php</exclude-pattern>
220         </rule>
221         <rule ref="MediaWiki.Usage.ForbiddenFunctions.shell_exec">
222                 <!--
223                         Continue to allow existing violations, but enable the sniff to prevent
224                         any new occurrences.
225                 -->
226                 <exclude-pattern>*/maintenance/mwdocgen\.php</exclude-pattern>
227                 <exclude-pattern>*/maintenance/updateCredits\.php</exclude-pattern>
228         </rule>
229         <rule ref="MediaWiki.Usage.ForbiddenFunctions.system">
230                 <!--
231                         Continue to allow existing violations, but enable the sniff to prevent
232                         any new occurrences.
233                 -->
234                 <exclude-pattern>*/maintenance/mwdocgen\.php</exclude-pattern>
235         </rule>
236         <rule ref="MediaWiki.Commenting.MissingCovers.MissingCovers">
237                 <exclude-pattern>*/tests/phpunit/structure/*</exclude-pattern>
238         </rule>
239         <rule ref="Generic.Arrays.DisallowShortArraySyntax">
240                 <!--
241                         T273340: Rule not to be enabled on any other file.
242                         PHPVersionCheck.php requires syntax to be old PHP compatible.
243                         The rest should therefore use [] rather than array() as per the
244                         MediaWiki style guide.
245                 -->
246                 <include-pattern>includes/PHPVersionCheck\.php</include-pattern>
247         </rule>
248         <file>.</file>
249         <arg name="encoding" value="UTF-8"/>
250         <arg name="extensions" value="php"/>
251         <exclude-pattern type="relative">^(extensions|skins)/*</exclude-pattern>
252         <exclude-pattern>LocalSettings(-installer)?\.php</exclude-pattern>
253 </ruleset>