/coding-standards-php

PHP_CodeSniffer rules (sniffs) for Acquia coding standards

Primary LanguageShellGNU General Public License v2.0GPL-2.0

Acquia Coding Standards for PHP

Latest Stable Version Total Downloads Latest Unstable Version License Build Status

Acquia Coding Standards for PHP is a collection of PHP_CodeSniffer rules (sniffs) for Acquia coding standards for PHP projects, including Drupal extensions.

Rules

Acquia Coding Standards for PHP includes a selection of sniffs from the following rulesets:

Rulesets

Rules are split into rulesets according to the project language and framework:

  • AcquiaPHP contains sniffs applicable to all PHP projects.
  • AcquiaDrupalStrict incorporates AcquiaPHP and adds all Drupal coding standards and best practices sniffs. It is recommended for new Drupal projects and teams familiar with Drupal coding standards.
  • AcquiaDrupalTransitional provides a relaxed standard for legacy Drupal codebases or teams new to Drupal coding standards. It incorporates AcquiaPHP and adds a more or less straight copy of Drupal core's own phpcs configuration, making it sufficient for core contribution.

Installation & usage

  1. Add Acquia Coding Standards for PHP to your project via Composer:

    composer require --dev acquia/coding-standards
  2. Inform PHP CodeSniffer of the location of the standard and its dependencies:

    • It is strongly recommended that you use a Composer plugin to handle this for you, e.g., DealerDirect/phpcodesniffer-composer-installer:

      composer config extra.phpcodesniffer-search-depth 4
      
      # Change the newly-set value to a number, since `composer config` always creates strings.
      # @see https://github.com/composer/composer/issues/8195
      # @see https://github.com/Dealerdirect/phpcodesniffer-composer-installer/issues/82
      sed -i'.bak' 's|"phpcodesniffer-search-depth": "4"|"phpcodesniffer-search-depth": 4|' composer.json && rm composer.json.bak
      
      composer require --dev dealerdirect/phpcodesniffer-composer-installer
    • Alternatively, add a script to your composer.json to handle it:

      {
          "scripts": {
              "post-install-cmd": "@install-coding-standards",
              "post-update-cmd" : "@install-coding-standards",
              "install-coding-standards": "\"vendor/bin/phpcs\" --config-set installed_paths vendor/acquia/coding-standards/src,vendor/drupal/coder/coder_sniffer,vendor/pheromone/phpcs-security-audit,vendor/phpcompatibility/php-compatibility"
          }
      }
  3. Check code for standards compliance:

    ./vendor/bin/phpcs --standard=AcquiaDrupalStrict path/to/code

    Automatically fix any standards violations possible:

    ./vendor/bin/phpcbf --standard=AcquiaDrupalStrict path/to/code
  4. Optionally create a default configuration file for your project so you don't have to provide the command-line arguments every time (i.e., below). Here's a working example: example/phpcs.xml.dist.

    ./vendor/bin/phpcs
  5. Optionally add code checking to your Git pre-commit hook to prevent committing code with violations. Since client-side Git hooks are not copied when a repository is cloned, you might like to use an automated solution like BrainMaestro/composer-git-hooks to manage them, for example: example/composer.json.

Contribution

Contributions are welcome! See CONTRIBUTING.md.

License

Copyright (C) 2019 Acquia, Inc.

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 2 as published by the Free Software Foundation.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.