Coder is a library for automated Drupal code reviews and coding standard fixes. It defines rules for PHP_CodeSniffer
Built-in support for:
- "Drupal": Coding Standards https://www.drupal.org/coding-standards
- "DrupalPractice": Best practices for Drupal module development
Online documentation: https://www.drupal.org/node/1419980
Note that Javascript support has been removed. To check and fix Javascript files please use ESLint and see the Drupal ESLint documentation.
First, make sure Composer is installed correctly:
which composer
If you get composer not found or similar, follow Composer's installation instructions.
Install Coder (8.x-3.x) in your global Composer directory in your home directory
(~/.composer
):
composer global require drupal/coder
To make the phpcs
and phpcbf
commands available globally, add the Composer
bin path to your $PATH
variable in ~/.profile
, ~/.bashrc
or ~/.zshrc
:
export PATH="$PATH:$HOME/.composer/vendor/bin"
Register the Drupal and DrupalPractice Standard with PHPCS:
phpcs --config-set installed_paths ~/.composer/vendor/drupal/coder/coder_sniffer
The Coder package (>= 8.2.11) now works with Composer Installer Plugins, that find and register standards whenever packages are installed or updated. To use such a plugin within your project, follow these steps.
composer require --dev dealerdirect/phpcodesniffer-composer-installer
composer require --dev drupal/coder
Now, you will see Drupal and DrupalPractice listed in the available PHP CodeSniffer standards.
vendor/bin/phpcs -i
The same can be done for a Composer global installation.
composer global require dealerdirect/phpcodesniffer-composer-installer
composer global require drupal/coder
Check Drupal coding standards
phpcs --standard=Drupal /file/to/drupal/example_module
Check Drupal best practices
phpcs --standard=DrupalPractice /file/to/drupal/example_module
Automatically fix coding standards
phpcbf --standard=Drupal /file/to/drupal/example_module
Drupal Code Sniffer can be used with various editors.
Editors:
Coder Sniffer comes with a PHPUnit test suite to make sure the sniffs work correctly. Use Composer to install the dependencies:
composer install
Then execute the tests:
./vendor/bin/phpunit
Then execute the coding standards checker on Coder itself:
./vendor/bin/phpcs
- Make sure an issue exists at https://www.drupal.org/project/issues/coder
- Create a Pull Request against https://github.com/pfrenssen/coder
- Post a link to the pull request to the issue on drupal.org and set the issue to "needs review"
Thank you!
- Pieter Frenssen, https://www.drupal.org/u/pfrenssen
- Michael Welford, https://www.drupal.org/u/mikejw
- Klaus Purer, https://www.drupal.org/u/klausi
Greg Sherwood and Squiz Pty Ltd, many sniffs are modified copies of their original work on PHPCS.