If you've been doing Drupal development for any amount of time, chances are that you have installed Drupal Coder to help you write clean, compliant code. Coder allows you to check your Drupal code against the Drupal coding standards and other best practices using PHP_CodeSniffer. It can be configured to work in your IDE, and also works on the command line.
Writing code according to standards helps avoid common errors, and helps teams understand the code faster.
I installed Coder using Composer per the well written instructions. Using this method installs it globally, so I can use it on all of my projects, and installs all the dependencies, including PHP_CodeSniffer.
I recently was tasked with working on a Wordpress site, and I started looking into the WordPress Coding Standards. My setup didn't jive with the standard installation method since I already had PHP_CodeSniffer installed globally using composer. I had to do a little digging to add these additional standards to my already installed setup.
Here is a quick recap on how to install Coder using composer, then we'll get into the WordPress Coding Standards setup.
Install Coder
Use this command to install Coder and all it's dependencies globally, so you can use them on your local computer in any project.
composer global require drupal/coder
To make the commands available globally, add this line to your .~/bash_profile, and that it is sourced (or restart your terminal).
# Composer recommended PATH export PATH="$PATH:$HOME/.composer/vendor/bin"
Tell phpcs where the Drupal and DrupalPractice standards are located:
phpcs --config-set installed_paths ~/.composer/vendor/drupal/coder/coder_sniffer
Verify it worked with:
phpcs -i
You should see:
The installed coding standards are MySource, PEAR, PHPCS, PSR1, PSR2, Squiz, Zend, Drupal, and DrupalPractice
You can now navigate to your Drupal project and run the following command to use:
phpcs --standard=Drupal file.name
Install Wordpress Coding Standards
Thanks to some help I found in the issue queue, here are the steps to install the Wordpress Coding Standards globally using composer.
composer global require wp-coding-standards/wpcs:dev-master
Again, to make these commands available globally, make sure you have this line in your ~/.bash_profile, and that it is sourced (or restart your terminal).
# Composer recommended PATH export PATH="$PATH:$HOME/.composer/vendor/bin"
Like we did with Drupal, we need to tell phpcs where the Wordpress standards are located. We use the same installed_paths configuration set, and use a comma to list both the Drupal and Wordpress paths.
phpcs --config-set installed_paths $HOME/.composer/vendor/drupal/coder/coder_sniffer,$HOME/.composer/vendor/wp-coding-standards/wpcs
Verify it worked with:
phpcs -i
You should now see:
The installed coding standards are MySource, PEAR, PHPCS, PSR1, PSR2, Squiz, Zend, Drupal, DrupalPractice, WordPress, WordPress-Core, WordPress-Docs, WordPress-Extra and WordPress-VIP
You can now navigate to your Wordpress project and run the following command to use:
phpcs --standard=Wordpress file.name
Add aliases
If you've worked with me, or read my posts before, you know I love aliases. They streamline your process and help make you more productive. Add these aliases into your .bash_profile, .bashrc, or wherever you keep your aliases, and source it, or restart your terminal.
# Drupal Coding Standards alias drupalcs="phpcs --standard=Drupal --extensions='php,module,inc,install,test,profile,theme,css,info,txt,md'" alias drupalcsp="phpcs --standard=DrupalPractice --extensions='php,module,inc,install,test,profile,theme,css,info,txt,md'" alias drupalcbf="phpcbf --standard=Drupal --extensions='php,module,inc,install,test,profile,theme,css,info,txt,md'" # WordPress Coding Standards alias wpcs="phpcs --standard=Wordpress" alias wpcbf="phpcbf --standard=Wordpress"
After this you can simply type drupalcs folder_name or wpcs file.name and start writing better code!
Acknowledgements Thanks to Micheal Porter, Albert Jankowski, and Mike Acklin for the technical review of this article, and to all the maintainers! Photo by Ilya Pavlov on Unsplash