Skip to content

wikimedia/mediawiki-tools-codesniffer

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

MediaWiki coding conventions

Abstract

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. :-)

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:

    <?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>
    
  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 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.

    <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>
    

TODO

  • Migrate the old code-utils/check-vars.php

About

Github mirror of MediaWiki tool codesniffer - our actual code is hosted with Gerrit (please see https://www.mediawiki.org/wiki/Developer_access for contributing)

Resources

License

Code of conduct

Stars

Watchers

Forks

Languages