MediaWiki coding conventions
============================
Abstract
--------
This project implements a set of rules for use with [PHP CodeSniffer][0].
See [MediaWiki conventions][1] on our wiki for a detailed description of the
coding conventions that are validated by these rules. :-)
How to install
--------------
1. Create a composer.json which adds this project as a dependency:
```
{
"require-dev": {
"mediawiki/mediawiki-codesniffer": "40.0.1"
},
"scripts": {
"test": [
"phpcs -p -s"
],
"fix": "phpcbf"
}
}
```
2. Create a .phpcs.xml with our configuration:
```
.
```
3. Install: `composer update`
4. Run: `composer test`
5. Run: `composer fix` to auto-fix some of the errors, others might need
manual intervention.
6. Commit!
Note that for most MediaWiki projects, we'd also recommend adding a PHP linter
to your `composer.json` – see the [full documentation][2] for more details.
Configuration
-------------
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.
```
5
```
* `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`.
```
```
* `MediaWiki.Commenting.ClassLevelLicense`: This sniff does nothing by default.
```
```
* `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...()`.
```
```
* `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...`.
```
```
* `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.
```
```
---
[0]: https://packagist.org/packages/squizlabs/php_codesniffer
[1]: https://www.mediawiki.org/wiki/Manual:Coding_conventions/PHP
[2]: https://www.mediawiki.org/wiki/Continuous_integration/Entry_points#PHP