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" />
30 <rule ref="MediaWiki.NamingConventions.PrefixedGlobalFunctions">
33 includes/GlobalFunctions.php
35 maintenance/language/transstat.php
40 maintenance/storage/moveToExternal.php
42 maintenance/storage/resolveStubs.php
45 tests/phpunit/includes/HooksTest.php
48 tests/qunit/data/styleTest.css.php
51 <property name="ignoreList" type="array" value="cssfilter,mccGetHelp,mccShowUsage,mimeTypeMatch,moveToExternal,NothingFunction,NothingFunctionData,resolveStub,resolveStubs,showUsage" />
54 <rule ref="MediaWiki.NamingConventions.ValidGlobalName">
56 <property name="ignoreList" type="array" value="$IP" />
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>
65 <rule ref="Generic.Classes.DuplicateClassName.Found">
66 <exclude-pattern>*/includes/libs/rdbms/dbal/MWPostgreSqlPlatformCompat\.php</exclude-pattern>
68 <rule ref="Generic.Files.LineLength">
69 <exclude-pattern>*/languages/messages/*</exclude-pattern>
71 <rule ref="MediaWiki.Files.ClassMatchesFilename.NotMatch">
73 Continue to allow existing violations, but enable the sniff to prevent
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>
117 <rule ref="MediaWiki.Files.ClassMatchesFilename.WrongCase">
119 Continue to allow existing violations, but enable the sniff to prevent
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>
141 <rule ref="Generic.PHP.NoSilencedErrors.Discouraged">
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.
162 <exclude-pattern>*/tests/*</exclude-pattern>
164 <rule ref="Generic.Files.OneObjectStructurePerFile.MultipleFound">
166 Continue to allow existing violations, but enable the sniff to prevent
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>
182 <rule ref="PSR2.Methods.MethodDeclaration.Underscore">
183 <exclude-pattern>*/includes/StubObject\.php</exclude-pattern>
184 <exclude-pattern>*/includes/StubUserLang\.php</exclude-pattern>
186 <rule ref="MediaWiki.Usage.AssignmentInReturn.AssignmentInReturn">
187 <exclude-pattern>*/tests/phpunit/*</exclude-pattern>
189 <rule ref="MediaWiki.Usage.ForbiddenFunctions.escapeshellarg">
191 Continue to allow existing violations, but enable the sniff to prevent
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>
198 <rule ref="MediaWiki.Usage.ForbiddenFunctions.popen">
200 Continue to allow existing violations, but enable the sniff to prevent
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>
208 <rule ref="MediaWiki.Usage.ForbiddenFunctions.proc_open">
210 Continue to allow existing violations, but enable the sniff to prevent
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>
221 <rule ref="MediaWiki.Usage.ForbiddenFunctions.shell_exec">
223 Continue to allow existing violations, but enable the sniff to prevent
226 <exclude-pattern>*/maintenance/mwdocgen\.php</exclude-pattern>
227 <exclude-pattern>*/maintenance/updateCredits\.php</exclude-pattern>
229 <rule ref="MediaWiki.Usage.ForbiddenFunctions.system">
231 Continue to allow existing violations, but enable the sniff to prevent
234 <exclude-pattern>*/maintenance/mwdocgen\.php</exclude-pattern>
236 <rule ref="MediaWiki.Commenting.MissingCovers.MissingCovers">
237 <exclude-pattern>*/tests/phpunit/structure/*</exclude-pattern>
239 <rule ref="Generic.Arrays.DisallowShortArraySyntax">
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.
246 <include-pattern>includes/PHPVersionCheck\.php</include-pattern>
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>