PhpStorm 2018.2 Help

PHP Code Sniffer

In addition to built-in coding assistance, PhpStorm provides code style check through integration with the PHP Code Sniffer tool, which validates your code for consistency with a coding standard of your choice. You can appoint one of the predefined coding standards or use your own previously defined coding standard with the root directory outside the default PHP Code Sniffer’s Standards directory. Moreover, you can share your custom coding style with your team.

To use PHP Code Sniffer from PhpStorm instead of command line, you need to register it in PhpStorm and configure it as a PhpStorm code inspection. Once installed and enabled in PhpStorm, the tool is available in any opened PHP file, and no additional steps are required to launch it. The on-the-fly code check is activated upon every update in the file thus making it easy to get rid of discovered problems.

Errors and warnings reported by PHP Code Sniffer on-the-fly are displayed as pop-up messages. When the tool is run in the batch mode, the errors and warnings are displayed in the Inspection Results tool window. Each message has the phpcs prefix to distinguish it from PhpStorm internal inspections.

Before you start

Make sure the PHP plugin is enabled. The plugin is activated by default. If the plugin is disabled, enable it on the Plugins settings page as described in Managing Plugins.

Installing and configuring PHP Code Sniffer

PHP Code Sniffer scripts can be used as local scripts, the scripts associated with PHP interpreters, or scripts declared as project dependencies and installed via Composer, which is the preferable and recommended way.

Installing PHP Code Sniffer with Composer

When you install PHP Code Sniffer with Composer, PhpStorm automatically downloads the necessary scripts, registers them in the IDE, and, optionally, enables and configures the corresponding code inspection.

  1. On the context menu of composer.json, choose Composer | Manage Dependencies. Alternatively choose Tools | Composer | Manage Dependencies from the main menu.

  2. In the Manage Composer Dependencies Dialog that opens, select the squizlabs/php_codesniffer package from the Available Packages list, possibly using the search field. The list shows all the available packages; the packages that are already installed are marked with a checkmark.

    Choose the relevant version from the Version to install list.

  3. If necessary, expand the Settings hidden area and specify the advanced installation options. In the Command line parameters field, type the additional command line parameters.

  4. Click Install.

Configuring PHP Code Sniffer manually

You can use the manually downloaded local PHP code quality tool scripts or scripts associated with PHP interpreters. There can be a number of local and remote PHP interpreters, the one specified on the PHP page of the Settings/Preferences dialog is considered Project Default. Learn more about configuring PHP interpreters in Configuring Remote PHP Interpreters or in Configuring Local PHP Interpreters.

To choose a PHP Code Sniffer script to use

  1. In the Settings/Preferences dialog (Ctrl+Alt+S), navigate to Languages & Frameworks | PHP | Quality Tools.

  2. From the Configuration list in the Development Environment area, choose the script to use:
    • To use the script associated with a specific remote PHP interpreter, choose the name of this interpreter.

    • To use a local script, choose Local. In this case the local PHP Code Sniffer will be executed no matter which PHP interpreter - local or remote - is used in the project. Note that there can be only one Local configuration for PHP Code Sniffer because PhpStorm runs a script (phpcs.bat for Windows or phpcs for Linux and macOS) that contains a path to a PHP engine.

    • To use the script associated with the default project interpreter, that is, the one chosen on the PHP page of the Settings dialog, choose By default project interpreter.

To configure a local PHP Code Sniffer script

  1. Download and install the PHP Code Sniffer scripts.

    To check the PHP Code Sniffer installation, switch to the installation directory and run the following command:

    phpcs --version

    If the tool is available, you will get a message in the following format:

    PHP_CodeSniffer version <version> (stable) by Squiz. (http://www.squiz.net)

    To have code checked against your own custom coding standard, create it. Store the rules and the ruleset.xml file that points to them in the coding standard root directory.
  2. Register the local PHP Code Sniffer script in PhpStorm:
    • In the Settings/Preferences dialog (Ctrl+Alt+S), click PHP under Languages & Frameworks, and then click Code Sniffer.

    • On the Code Sniffer page that opens, click browseButton next to the Configuration list.

    • In the PHP Code Sniffer dialog that opens, specify the location of the phpcs.bat or phpcs PHP Code Sniffer executable in the PHP PHP Code Sniffer path field. Type the path manually or click Browse browseButton and select the path in the dialog that opens.

      To check that the specified path to phpcs.bat or phpcs ensures interaction between PhpStorm and PHP Code Sniffer, that is, the tool can be launched from PhpStorm and PhpStorm will receive problem reports from it, click the Validate button. This validation is equal to running the phpcs --version command. If validation passes successfully, PhpStorm displays the information on the detected PHP Code Sniffer version.

To configure a PHP Code Sniffer script associated with a PHP interpreter

  1. In the Settings/Preferences dialog (Ctrl+Alt+S), click PHP under Languages & Frameworks, and then click Code Sniffer.

  2. On the Code Sniffer page that opens, click browseButton next to the Configuration list. The PHP Code Sniffer dialog opens showing a list of all the configured PHP Code Sniffer scripts in the left-hand pane, one of them is of the type Local and others are named after the PHP interpreters with which the scripts are associated. Click icons general add svg on the toolbar.

  3. In the PHP Code Sniffer by Remote Interpreter dialog that opens, choose the remote PHP interpreter to use the associated script from. If the list does not contain a relevant interpreter, click browseButton and configure a remote interpreter in the CLI Interpreters dialog as described in Configuring Remote PHP Interpreters.

    When you click OK, PhpStorm brings you back to the PHP Code Sniffer dialog where the new PHP Code Sniffer configuration is added to the list and the right-hand pane shows the chosen remote PHP interpreter, the path to the PHP Code Sniffer associated with it, and the advanced PHP Code Sniffer options.

Configuring advanced PHP Code Sniffer options

PhpStorm lets you specify advanced PHP Code Sniffer options and thus fine-tune the PHP Code Sniffer process behavior depending on the configuration of your computer and the rule sets used.

  1. In the Settings/Preferences dialog (Ctrl+Alt+S), click PHP under Languages & Frameworks, and then click Code Sniffer.

  2. In the Maximum number of messages per file field, set the upper limit for the total number of messages to be reported for a file. All the messages above this limit will be rejected and PhpStorm will display the warning message at top of the editor tab or in the Inspection Results Tool Window after the inspection is performed.

  3. In the Tool process timeout field, specify how long you want PhpStorm to wait for a result from PHP Code Sniffer, whereupon the process is killed to prevent excessive CPU and memory usage.

Configuring PHP Code Sniffer as a PhpStorm inspection

To configure the PHP Code Sniffer inspection manually

  1. In the Settings/Preferences dialog (Ctrl+Alt+S), click Inspections under Editor.

  2. On the Inspections page that opens, expand the PHP | Quality tools node and select the checkbox next to PHP Code Sniffer validation.

  3. On the right-hand pane of the page, configure the PHP Code Sniffer tool using the controls in the Options area:
    1. From the Severity list, choose the severity degree for the PHP Code Sniffer inspection. The selected value determines how serious the detected discrepancies will be treated by PhpStorm and presented in the inspection results.

    2. From the Scope list, choose the scope to limit the inspection application to.

    3. To have PHP Code Sniffer report warnings in addition to errors, select the Show warnings as... checkbox and choose the severity degree from the list. To have only errors reported and suppress reporting warnings, clear Show warnings as... checkbox.

    4. Appoint the coding standard to apply.

      • To use one of the predefined coding standards,select it the Coding standard list, appoint the coding style to check your code against. The list contains all the coding standards installed inside the main php_codesniffer directory structure.

      • To have your code checked against your own previously defined coding standard, choose Custom. Click Browse browseButton.png and in the Custom Coding Standard dialog box that opens, specify the path to the ruleset.xml file for your own coding standard in the Path to ruleset field. Type the path manually or click Browse browseButton.png and choose the relevant folder in the dialog that opens.

    5. Select the Show sniff name checkbox to have the corresponding sniff's name displayed in the editor or the inspection results in addition to the inspection summary.

Configuring the PHP Code Sniffer inspection with Composer

You can include information on the default and custom PHP Code Sniffer rulesets inside the scripts section of composer.json. When you install or update project dependencies, the specified rulesets will be detected and the PHP Code Sniffer validation inspection will be enabled automatically.

If no ruleset is specified in the scripts section of composer.json, PhpStorm will additionally check the project root to locate the ruleset with the phpcs.xml default name. If the file is present, it will be automatically selected as the inspection's Custom ruleset.

To configure the PHP Code Sniffer inspection with Composer

  • In the scripts section of composer.json, add the phpcs PHP Code Sniffer launch command into one of the leaf elements.

    Provide the --standard argument to denote the coding standard used. For example, adding the following record will set the coding standard to PSR2:

    "scripts": { "phpcs": "phpcs --standard=PSR2" }

    Adding the following record will set the coding standard to Custom and the path to the ruleset to <project root>/phpcs.xml:

    "scripts": { "phpcs": "phpcs --standard=phpcs.xml" }

Sharing a custom coding style with the team

  1. Put the root directory of your coding standard under the project root.

  2. Configure PHP Code Sniffer as a PhpStorm inspection.

  3. Appoint your coding standard.

  4. Make sure that a project profile is selected at the top of the Inspections page. Such profiles are saved in a particular project's .idea directory (for example, $PROJECT_DIR/.idea/inspectionProfiles). See Customizing Profiles for details.

  5. On the Version Control page of the Settings/Preferences dialog, make sure that the .idea directory is put under version control.

Running Code Sniffer in the batch mode

  1. Run the inspection, by choosing Code | Inspect code on the main menu. Specify the inspection scope and profile.

  2. View the inspection results in the Inspection Results Tool Window. Errors and warnings reported by PHP Code Sniffer are prefixed with phpcs to distinguish them from PhpStorm internal inspections.

Excluding files from Code Sniffer inspection

When waiting for PHP Code Sniffer response exceeds the limit specified in the Tool process timeout field on Code Sniffer page, PhpStorm suggests adding the file to the ignore list. This list is shown on the PHP Code Sniffer page in the Ignored files area. For each file, PhpStorm displays its name and location.

  • To delete a file from the list and have PHP Code Sniffer process it again, select the file and click the Remove file button icons general remove svg.

  • To remove all the files from the list, click the Clean the list button icons actions close svg.

Last modified: 21 November 2018

See Also