mediawiki/mediawiki-codesniffer
PHP CodeSniffer ruleset that enforces MediaWiki coding conventions. Install via Composer, add the MediaWiki standard to your phpcs.xml, then run phpcs/phpcbf to lint and auto-fix issues. Includes configurable sniffs for project-specific needs.
This project implements a set of rules for use with PHP CodeSniffer.
See MediaWiki conventions on our wiki for a detailed description of the coding conventions that are validated by these rules. :-)
Create a composer.json which adds this project as a dependency. The latest version number can be found in HISTORY.md or on Packagist.
{
"require-dev": {
"mediawiki/mediawiki-codesniffer": "48.0.0"
},
"scripts": {
"test": [
"phpcs -p -s"
],
"fix": "phpcbf"
}
}
Create a .phpcs.xml with our configuration:
<?xml version="1.0"?>
<ruleset>
<rule ref="./vendor/mediawiki/mediawiki-codesniffer/MediaWiki"/>
<file>.</file>
<arg name="bootstrap" value="./vendor/mediawiki/mediawiki-codesniffer/utils/bootstrap-ci.php"/>
<arg name="extensions" value="php"/>
<arg name="encoding" value="UTF-8"/>
</ruleset>
Install: composer update
Run: composer test
Run: composer fix to auto-fix some of the errors, others might need
manual intervention.
Commit!
Note that for most MediaWiki projects, we'd also recommend adding a PHP linter
to your composer.json – see the full documentation for more details.
Some of the sniffs provided by this codesniffer standard allow you to configure details of how they work.
MediaWiki.Classes.FullQualifiedClassName: This sniff is disabled by default.
<rule ref="MediaWiki.Classes.FullQualifiedClassName">
<severity>5</severity>
<properties>
<property name="allowMainNamespace" value="false" />
<property name="allowInheritance" value="false" />
<property name="allowFunctions" value="false" />
</properties>
</rule>
MediaWiki.Usage.ExtendClassUsage: This sniff lets you exclude globals from being reported by the sniff, in case they
cannot be replaced with a Config::getConfig() call. Examples that are already in the list include $wgTitle and
$wgUser.
<rule ref="MediaWiki.Usage.ExtendClassUsage">
<properties>
<property name="nonConfigGlobals[]" type="array" value="$wg...,$wg..." />
</properties>
</rule>
MediaWiki.Commenting.ClassLevelLicense: This sniff does nothing by default.
<rule ref="MediaWiki.Commenting.ClassLevelLicense">
<properties>
<property name="license" value="GPL-2.0-or-later" />
</properties>
</rule>
MediaWiki.NamingConventions.PrefixedGlobalFunctions: This sniff lets you define a list of ignored global
functions and a list of allowed prefixes. By default the only allowed prefix is 'wf', corresponding
to the global function wf...().
<rule ref="MediaWiki.NamingConventions.PrefixedGlobalFunctions">
<properties>
<property name="allowedPrefixes[]" value="wf,..." />
<property name="ignoreList[]" value="...,..." />
</properties>
</rule>
MediaWiki.NamingConventions.ValidGlobalName: This sniff lets you define a list of ignored globals and a list of allowed
prefixes. By default the only allowed prefix is 'wg', for global variables $wg....
<rule ref="MediaWiki.NamingConventions.ValidGlobalName">
<properties>
<property name="allowedPrefixes[]" value="wg,..." />
<property name="ignoreList[]" value="...,..." />
</properties>
</rule>
MediaWiki.Arrays.TrailingComma: This sniff lets you enforce that multi-line arrays have trailing commas,
which makes Git diffs nicer.
It can also enforce that single-line arrays have no trailing comma.
By default, it does nothing.
<rule ref="MediaWiki.Arrays.TrailingComma">
<properties>
<property name="singleLine" value="false" />
<property name="multiLine" value="true" />
</properties>
</rule>
How can I help you explore Laravel packages today?