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.PropertyDocumentation.MissingDocumentationPrivate" />
9 <exclude name="MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationProtected" />
10 <exclude name="MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPublic" />
11 <exclude name="MediaWiki.Commenting.PropertyDocumentation.MissingVar" />
12 <exclude name="MediaWiki.Commenting.PropertyDocumentation.SpacingAfter" />
13 <exclude name="MediaWiki.Commenting.PropertyDocumentation.WrongStyle" />
14 <exclude name="MediaWiki.ControlStructures.AssignmentInControlStructures.AssignmentInControlStructures" />
15 <exclude name="MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName" />
16 <exclude name="MediaWiki.Usage.DbrQueryUsage.DbrQueryFound" />
17 <exclude name="MediaWiki.Usage.DeprecatedGlobalVariables.Deprecated$wgContLang" />
18 <exclude name="MediaWiki.Usage.DeprecatedGlobalVariables.Deprecated$wgTitle" />
19 <exclude name="MediaWiki.Usage.DeprecatedGlobalVariables.Deprecated$wgUser" />
20 <exclude name="MediaWiki.Usage.DeprecatedGlobalVariables.Deprecated$wgVersion" />
21 <exclude name="MediaWiki.Usage.ExtendClassUsage.FunctionConfigUsage" />
22 <exclude name="MediaWiki.Usage.ExtendClassUsage.FunctionVarUsage" />
23 <exclude name="MediaWiki.Usage.ForbiddenFunctions.is_resource" />
24 <exclude name="MediaWiki.Usage.ForbiddenFunctions.passthru" />
25 <exclude name="MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment" />
27 <!-- TODO Still to be done -->
28 <rule ref="MediaWiki.Commenting.FunctionComment.WrongStyle">
29 <exclude-pattern>includes/</exclude-pattern>
32 <rule ref="MediaWiki.Commenting.FunctionComment.MissingParamTag">
33 <exclude-pattern>tests/</exclude-pattern>
35 <rule ref="MediaWiki.NamingConventions.PrefixedGlobalFunctions">
38 includes/GlobalFunctions.php
40 maintenance/language/transstat.php
45 maintenance/storage/moveToExternal.php
47 maintenance/storage/resolveStubs.php
50 tests/phpunit/includes/HooksTest.php
53 tests/qunit/data/styleTest.css.php
56 <property name="ignoreList" type="array" value="cssfilter,mccGetHelp,mccShowUsage,mimeTypeMatch,moveToExternal,NothingFunction,NothingFunctionData,resolveStub,resolveStubs,showUsage" />
59 <rule ref="MediaWiki.NamingConventions.ValidGlobalName">
61 <property name="ignoreList" type="array" value="$IP" />
64 <rule ref="MediaWiki.NamingConventions.ValidGlobalName.allowedPrefix">
65 <exclude-pattern>maintenance/doMaintenance\.php</exclude-pattern>
66 <exclude-pattern>maintenance/mergeMessageFileList\.php</exclude-pattern>
67 <exclude-pattern>maintenance/CommandLineInc\.php</exclude-pattern>
68 <exclude-pattern>tests/phpunit/MediaWikiIntegrationTestCase\.php</exclude-pattern>
70 <rule ref="Generic.Files.LineLength">
71 <exclude-pattern>*/languages/messages/Messages*\.php</exclude-pattern>
73 <rule ref="MediaWiki.Files.ClassMatchesFilename.NotMatch">
75 Whitelist existing violations, but enable the sniff to prevent
78 <exclude-pattern>*/includes/specials/SpecialMostimages\.php</exclude-pattern>
79 <exclude-pattern>*/includes/specials/SpecialMovepage\.php</exclude-pattern>
80 <exclude-pattern>*/includes/specials/SpecialRandompage\.php</exclude-pattern>
81 <exclude-pattern>*/includes/specials/SpecialUserrights\.php</exclude-pattern>
82 <exclude-pattern>*/includes/specials/SpecialWantedfiles\.php</exclude-pattern>
83 <exclude-pattern>*/includes/specials/SpecialWantedpages\.php</exclude-pattern>
84 <exclude-pattern>*/maintenance/archives/upgradeLogging\.php</exclude-pattern>
85 <exclude-pattern>*/maintenance/benchmarks/bench_HTTP_HTTPS\.php</exclude-pattern>
86 <exclude-pattern>*/maintenance/benchmarks/bench_Wikimedia_base_convert\.php</exclude-pattern>
87 <exclude-pattern>*/maintenance/benchmarks/bench_delete_truncate\.php</exclude-pattern>
88 <exclude-pattern>*/maintenance/benchmarks/bench_if_switch\.php</exclude-pattern>
89 <exclude-pattern>*/maintenance/benchmarks/bench_utf8_title_check\.php</exclude-pattern>
90 <exclude-pattern>*/maintenance/benchmarks/bench_wfIsWindows\.php</exclude-pattern>
91 <exclude-pattern>*/maintenance/cleanupTitles\.php</exclude-pattern>
92 <exclude-pattern>*/maintenance/edit\.php</exclude-pattern>
93 <exclude-pattern>*/maintenance/findDeprecated\.php</exclude-pattern>
94 <exclude-pattern>*/maintenance/getText\.php</exclude-pattern>
95 <exclude-pattern>*/maintenance/importDump\.php</exclude-pattern>
96 <exclude-pattern>*/maintenance/install\.php</exclude-pattern>
97 <exclude-pattern>*/maintenance/invalidateUserSessions\.php</exclude-pattern>
98 <exclude-pattern>*/maintenance/jsparse\.php</exclude-pattern>
99 <exclude-pattern>*/maintenance/lag\.php</exclude-pattern>
100 <exclude-pattern>*/maintenance/language/StatOutputs\.php</exclude-pattern>
101 <exclude-pattern>*/maintenance/language/date-formats\.php</exclude-pattern>
102 <exclude-pattern>*/maintenance/minify\.php</exclude-pattern>
103 <exclude-pattern>*/maintenance/mysql\.php</exclude-pattern>
104 <exclude-pattern>*/maintenance/parse\.php</exclude-pattern>
105 <exclude-pattern>*/maintenance/preprocessorFuzzTest\.php</exclude-pattern>
106 <exclude-pattern>*/maintenance/rebuildImages\.php</exclude-pattern>
107 <exclude-pattern>*/maintenance/renderDump\.php</exclude-pattern>
108 <exclude-pattern>*/maintenance/shell\.php</exclude-pattern>
109 <exclude-pattern>*/maintenance/sql\.php</exclude-pattern>
110 <exclude-pattern>*/maintenance/term/MWTerm\.php</exclude-pattern>
111 <exclude-pattern>*/maintenance/update\.php</exclude-pattern>
112 <exclude-pattern>*/maintenance/userOptions\.php</exclude-pattern>
113 <exclude-pattern>*/maintenance/view\.php</exclude-pattern>
114 <!-- Language converters use the pattern of 2 classes in one file -->
115 <exclude-pattern>*/languages/*\.php</exclude-pattern>
116 <!-- Skip violations in some tests for now -->
117 <exclude-pattern>*/tests/parser/*\.php</exclude-pattern>
118 <exclude-pattern>*/tests/phpunit/maintenance/*\.php</exclude-pattern>
119 <exclude-pattern>*/tests/phpunit/bootstrap\.php</exclude-pattern>
120 <exclude-pattern>*/tests/phpunit/phpunit\.php</exclude-pattern>
122 <rule ref="MediaWiki.Files.ClassMatchesFilename.WrongCase">
124 Whitelist existing violations, but enable the sniff to prevent
127 <exclude-pattern>*/maintenance/language/alltrans\.php</exclude-pattern>
128 <exclude-pattern>*/maintenance/language/digit2html\.php</exclude-pattern>
129 <exclude-pattern>*/maintenance/language/langmemusage\.php</exclude-pattern>
130 <exclude-pattern>*/maintenance/mctest\.php</exclude-pattern>
131 <exclude-pattern>*/maintenance/mergeMessageFileList\.php</exclude-pattern>
132 <exclude-pattern>*/maintenance/mwdocgen\.php</exclude-pattern>
133 <exclude-pattern>*/maintenance/rebuildall\.php</exclude-pattern>
134 <exclude-pattern>*/maintenance/rebuildmessages\.php</exclude-pattern>
135 <exclude-pattern>*/maintenance/rebuildrecentchanges\.php</exclude-pattern>
136 <exclude-pattern>*/maintenance/rebuildtextindex\.php</exclude-pattern>
137 <exclude-pattern>*/maintenance/storage/checkStorage\.php</exclude-pattern>
138 <exclude-pattern>*/maintenance/storage/recompressTracked\.php</exclude-pattern>
139 <exclude-pattern>*/maintenance/storage/trackBlobs\.php</exclude-pattern>
140 <!-- Skip violations in some tests for now -->
141 <exclude-pattern>*/tests/phpunit/unit/includes/GlobalFunctions/*\.php</exclude-pattern>
142 <exclude-pattern>*/tests/phpunit/includes/GlobalFunctions/*\.php</exclude-pattern>
143 <exclude-pattern>*/tests/phpunit/maintenance/*\.php</exclude-pattern>
144 <exclude-pattern>*/tests/phpunit/integration/includes/GlobalFunctions/*\.php</exclude-pattern>
146 <rule ref="Generic.PHP.NoSilencedErrors.Discouraged">
148 Our normal policy of using Wikimedia\AtEase does not always make sense tests.
150 AtEase cannot be cleanly used in tests that also use expectException() as
151 the restoreWarnings() call would never be reached:
153 $this->expectException( PasswordError::class );
154 AtEase::suppressWarnings();
155 $password->crypt( 'whatever' );
156 AtEase::restoreWarnings();
158 The above will stop at crypt(), as expected, and leave AtEase in a dirty
159 state for unrelated tests.
161 TODO: Stop using PHPUnit TestCase directly. Require with a structure test
162 or with a high-level check in our run() hook, that all test cases use either
163 MediaWikiUnitTestCase or MediaWikiIntegrationTestCase. Otherwise the check
164 in MediaWikiTestCaseTrait can still be bypassed and cause a random failures.
167 <exclude-pattern>*/tests/*\.php</exclude-pattern>
169 <rule ref="Generic.Files.OneObjectStructurePerFile.MultipleFound">
171 Whitelist existing violations, but enable the sniff to prevent
174 <exclude-pattern>*/maintenance/dumpIterator\.php</exclude-pattern>
175 <exclude-pattern>*/maintenance/findDeprecated\.php</exclude-pattern>
176 <exclude-pattern>*/maintenance/storage/recompressTracked\.php</exclude-pattern>
177 <exclude-pattern>*/maintenance/preprocessorFuzzTest\.php</exclude-pattern>
178 <exclude-pattern>*/maintenance/language/StatOutputs\.php</exclude-pattern>
179 <exclude-pattern>*/maintenance/language/generateCollationData\.php</exclude-pattern>
180 <exclude-pattern>*/maintenance/term/MWTerm\.php</exclude-pattern>
181 <!-- Language converters use the pattern of 2 classes in one file -->
182 <exclude-pattern>*/languages/*\.php</exclude-pattern>
183 <!-- We don't care that much about violations in tests -->
184 <exclude-pattern>*/tests/*\.php</exclude-pattern>
186 <rule ref="PSR2.Methods.MethodDeclaration.Underscore">
187 <exclude-pattern>*/includes/StubObject\.php</exclude-pattern>
188 <exclude-pattern>*/includes/StubUserLang\.php</exclude-pattern>
190 <rule ref="MediaWiki.Usage.AssignmentInReturn.AssignmentInReturn">
191 <exclude-pattern>*/tests/phpunit/*\.php</exclude-pattern>
193 <rule ref="MediaWiki.Usage.ForbiddenFunctions.escapeshellarg">
195 Whitelist existing violations, but enable the sniff to prevent
198 <exclude-pattern>*/includes/libs/filebackend/FSFileBackend\.php</exclude-pattern>
199 <exclude-pattern>*/includes/shell/Command\.php</exclude-pattern>
200 <exclude-pattern>*/includes/shell/Shell\.php</exclude-pattern>
202 <rule ref="MediaWiki.Usage.ForbiddenFunctions.popen">
204 Whitelist existing violations, but enable the sniff to prevent
207 <exclude-pattern>*/includes/GlobalFunctions\.php</exclude-pattern>
208 <exclude-pattern>*/includes/libs/filebackend/FSFileBackend\.php</exclude-pattern>
209 <exclude-pattern>*/maintenance/includes/SevenZipStream\.php</exclude-pattern>
210 <exclude-pattern>*/maintenance/populateImageSha1\.php</exclude-pattern>
212 <rule ref="MediaWiki.Usage.ForbiddenFunctions.proc_open">
214 Whitelist existing violations, but enable the sniff to prevent
217 <exclude-pattern>includes/export/DumpPipeOutput\.php</exclude-pattern>
218 <exclude-pattern>includes/resourceloader/ResourceLoaderImage\.php</exclude-pattern>
219 <exclude-pattern>includes/shell/Command\.php</exclude-pattern>
220 <exclude-pattern>maintenance/includes/TextPassDumper\.php</exclude-pattern>
221 <exclude-pattern>maintenance/mysql\.php</exclude-pattern>
222 <exclude-pattern>maintenance/storage/recompressTracked\.php</exclude-pattern>
223 <exclude-pattern>tests/parser/editTests\.php</exclude-pattern>
225 <rule ref="MediaWiki.Usage.ForbiddenFunctions.shell_exec">
227 Whitelist existing violations, but enable the sniff to prevent
230 <exclude-pattern>*/maintenance/mwdocgen\.php</exclude-pattern>
231 <exclude-pattern>*/maintenance/updateCredits\.php</exclude-pattern>
233 <rule ref="MediaWiki.Usage.ForbiddenFunctions.system">
235 Whitelist existing violations, but enable the sniff to prevent
238 <exclude-pattern>*/maintenance/mwdocgen\.php</exclude-pattern>
240 <rule ref="MediaWiki.Commenting.MissingCovers.MissingCovers">
241 <exclude-pattern>tests/phpunit/structure/*</exclude-pattern>
244 <arg name="encoding" value="UTF-8"/>
245 <arg name="extensions" value="php,php5,inc,sample"/>
246 <exclude-pattern type="relative">^extensions/</exclude-pattern>
247 <exclude-pattern type="relative">^skins/</exclude-pattern>
248 <exclude-pattern>LocalSettings\.php</exclude-pattern>