Examples uses mostly the same coding standards as Drupal core.
If you see a discrepancy between the coding standards tools used by core and those used by Examples, please file an issue so that Examples can follow core.
Examples uses the phpcs
tool to allow for checking PHP coding standards. We
use the drupal/coder
project for Drupal-specific coding standards.
We also use eslint
for JavaScript coding standards, and csslint
for CSS.
Examples has a phpcs.xml.dist
file at the root of the project. phpcs uses this
file to specify the current coding standards 'sniffs' which code in the project
must pass.
Contributors should install phpcs
in their local Drupal installation, and then
use that to run phpcs
against Examples as part of their development and review
process. (See details below on how to install and run this tool.)
Contributors can also patch the phpcs.xml.dist
file itself, in order to fix
the codebase to pass a given rule or sniff. Patches which do this should be
limited to a single rule or sniff, in order make the patch easier to review.
Examples also uses the Coder project (drupal/coder
), which adds additional
Drupal-specific coding standards. We're currently locked to Coder version
8.2.8, but this should change to reflect the state of core's coding standards.
Current versions of Drupal 8 core require phpcs and Coder as dev dependencies. That means they're already probably installed in your core vendor/ directory.
We need to tell phpcs
to use the Drupal coding standard provided by Coder,
because it isn't configured that way by default.
Like this:
$ cd my/drupal/root/
$ ./vendor/bin/phpcs --config-set installed_paths /full/path/to/drupal/vendor/drupal/coder/coder_sniffer/
// phpcs now knows how to find the Drupal standard. You can test it:
$ cd core
$ ../vendor/bin/phpcs -e --standard=Drupal
// Shows you a bunch of Drupal-related sniffs.
Now you can run phpcs:
$ cd modules/examples
$ ../../vendor/bin/phpcs -ps
// phpcs uses Examples' phpcs.xml.dist to verify coding standards.
// -p shows you progress dots.
// -s shows you sniff errors in the report.
If there are errors, they can sometimes be fixed with phpcbf
, which is
part of the phpcs
package.
$ ../../vendor/bin/phpcbf
// phpcbf now performs automated fixes.
Always look at the changes to see what phpcbf
did.
And always re-run phpcs
in order to discover whether phpcbf
handled all the
errors.
eslint
is a node.js tool. You can and probably should install it globally,
since installing it locally would add files to the examples project.
Instructions available here: https://www.npmjs.com/package/eslint
Examples has an .eslintrc
file which defines the JavaScript coding standard.
This file should be identical to the current Drupal core standard.
You can run eslint this way:
$ cd /path/to/examples
$ eslint .