Phpstorm Codesniffer

Posted : admin On 1/29/2022

We can proceed to a sub-section Quality Tools of PhpStorm configuration: When on it, click dotted button to open configuration window. Click plus + sign and select code sniffer by previously configured remote interpreter: When selected, press OK. You should see config: Please take into account that codesniffer path is a location inside container. Hi,I'm trying to set PHPCodeSniffer to use remote interpreter from my Vagrant, but I'm getting weird errors. It looks like PHPStorm is trying to use path to phpcs config as coding standard. PHPCodeSniffer path: C:UsersMYUSERNAMEAppDataRoamingComposervendorbinphpcs.bat. If I run this batch file from cmd.exe it works fine. Yet if I click 'Validate' next to the phpcs path, I get the message 'Can not run PHPCodeSniffer'.

To get to this final step, open PhpStorm back up and head over to PhpStorm Preferences Editor Inspections and drill down to PHP PHP Code Sniffer validation. Check that box, and if everything was properly set up, you should be able to select a coding standard from the dropdown (hit the refresh button if you don’t see any). PHP Code Sniffer is a PHP5 script that tokenises PHP, JavaScript and CSS files to detect violations of a defined coding standard. It is an essential development tool that ensures your code remains clean and consistent. It can also help prevent some common semantic errors made by developers.

PHP_CodeSniffer (PHPCS) is a tool that validates your code against a set of predefined standards and ensures that such standards are maintained across the team. This tutorial will walk you through automating those validations during development by setting up PHPCS on Sublime Text, Visual Studio Code, and PHPStorm.

Note: The accompanying sample project is available at https://github.com/idoqo/twilio-greeter. You can also download the phpcs.xml to use in your existing project.

Prerequisites

Completing this tutorial requires the following prerequisites:

  • Composer installed
  • Either Sublime Text, VS Code, or PHPStorm installed

Installing PHP Code Sniffer

All of the editors below require PHPCS to be pre-installed, and since we plan to use it across projects, we will install it globally with the following command:

You can check your installation with:

Note: If you get an error similar to command not found, ensure that you place the Composer bin folder in your PATH (usually $HOME/.config/composer/vendor/bin for Linux and $HOME/.composer/vendor/bin for MacOS).

Setting up PHPCS with Sublime Text

The Sublime Text package repository has two plugins that can be used to interface with PHPCS: SublimeLinter-phpcs and Phpcs. We are going to use the standalone Phpcs plugin as it offers more configuration options.

Launch package control with (Shift+Ctrl+P or Shift+Cmd+P). Select “Package Control: Install package” from the popup menu and search for “Phpcs”. The top result is what we are looking for as shown in the image below:

Next, we will set up the package configuration file by going to Preferences > Package Settings > Settings - User from the Menu Bar, paste the code block below into the newly created phpcs.sublime-settings and save it.

For a complete list of all the possible config options, you can look up the example settings in the plugin source code.

The next time you modify a PHP file and save, PHPCS should run automatically and report any violations that occur in the popup menu.

Setting up PHPCS with Visual Studio Code

Using PHPCS on VS Code is relatively easy as the vscode-phpcs plugin does a lot of heavy-lifting for us. To install the plugin:

  • Open the Quick Open dialog on VS Code (with Ctrl+P or Cmd+P)
  • Type “ext install phpcs” to find the extension and
  • Click the cloud icon to install.

Once installed, restart VS Code and the plugin will automatically search your global composer path for a PHPCS installation. Note that it also searches your project root for existing rulesets (which is the purpose of the phpcs.xml file in our sample project).

Now, open a PHP file you want to sniff. Red lines should appear in all the places with violations as shown below:

Setting up PHPCS with PHPStorm

PHPStorm natively supports code inspection with PHP_CodeSniffer, though configuring it is quite some work.

First, launch the Settings dialog (Ctrl+Alt+S) and navigate to Languages & Frameworks > PHP > Quality Tools. Expand the PHP Code Sniffer on the Quality Tools page and select Local from the Configuration dropdown. Click the “three dots button” beside the dropdown highlighted below:

Phpstorm Codesniffer

Specify the full path of the PHPCS executable in the new dialog that opens (which is $YOUR_COMPOSER_BIN_PATH/phpcs). You can click the Validate button to confirm it’s working and click “Apply” when you are done.

You should now see a different error on the Quality Tools page telling you that CodeSniffer inspection is not enabled.

Phpstorm

Code inspections are how PHPStorm detects (and corrects) problems such as dead code, misspellings, and of course, code style violations in your project.

In the Settings dialog, go to Editor > Inspections. From the inspections screen, expand the PHP Quality tools node and enable “PHP CodeSniffer validation”.

In the configuration pane that is now enabled, select “Custom” from the “Coding standard” dropdown, locate the ruleset configuration (phpcs.xml in our project directory), and apply your changes.

This way we can specify our preferences in the phpcs.xml file and have it applied across our project (irrespective of the tool we are using). Our code is now automatically being checked against our preferred standard and errors originating from PHPCS will be prefixed with phpcs.

Conclusion

PHP Code Sniffer helps achieve uniformity of code styles and having your editor automatically check for violations goes a long way in improving the quality of your codebase.

I hope you enjoyed the post and if there are issues or questions, please feel free to reach out to me via Email or on Github.

From Joomla! Documentation

English • ‎français • ‎русский • ‎Türkçe
  • 31. Installation of PHP Code Sniffer (phpcs)
  • 63. IDE Integration
    • 6.1PhpStorm
      • 6.1.1Set Path to Code Sniffer
      • 6.1.2PHP PSR-0, PSR-1 and PSR-2

A Nose For Joomla

This is a custom coding standard for the PHP CodeSniffer that attempts to codify and enforce the Joomla coding standards. This article covers how to set the automatic code style checker. It consists of three steps:

  1. Install PHP CodeSniffer (phpcs).
  2. Clone the Joomla Code Style (for use with for phpcs).
  3. Configure your IDE to work with PHP CodeSniffer and Joomla Code Style.
PHP Code Sniffer in action

Why?

  • Coherent and consistent coding practice makes the files look more professional. Conflicting styles in the same project (or worse, the same file) not only look sloppy, they encourage further sloppiness.
  • When all code complies with the same standard, bad code is easier for everyone to spot.
  • It makes it easier for someone new to a particular file in the project to find and fix errors or extend functionality.
  • If there is no consistent standard maintained, sometimes developers will reformat the code to suit themselves. This causes a wide range of changes in the code repository. If there is a later problem, a significant change could be lost in the chaff produced by a diff.

1. Installation of PHP Code Sniffer (phpcs)

Composer

PHP Code Sniffer is available via Composer. It can be installed system-wide with the following command:
composer global require squizlabs/php_codesniffer '~3.5' On Linux PHP Code Sniffer (phpcs) will be installed under your user folder:

  • Symbolic Link: ~/.composer/vendor/bin/phpcs
  • The file: ~/.composer/vendor/squizlabs/php_codesniffer/scripts/phpcs

To create that symbolic link, use on the command line: $ sudo ln -s ~/.config/composer/vendor/squizlabs/php_codesniffer/scripts /usr/bin/phpcs

or (for example OpenSuse)

  • Symbolic Link: ~/.config/composer/vendor/bin/phpcs
  • The file: ~/.config/composer/vendor/squizlabs/php_codesniffer/scripts/phpcs

On Windows PHP Code Sniffer (phpcs) will be installed under your user folder:

  • Symbolic Link: c:UsersUsernameAppDataRoamingComposervendorbinphpcs
  • The file: c:UsersUsernameAppDataRoamingComposervendorsquizlabsphp_codesnifferscriptsphpcs


Add composer bin directory to your $PATH

In order to execute PHP Code sniffer from anywhere on Linux or Mac command line you have to add .composer/vendor/bin to your $PATH variable. To do this persistent edit your shells start file, like your .profile or .bash_profile file depending which shell you are using (echo $SHELL shows you which one you are using).

Add the following line to the file: export PATH=$PATH:~/.composer/vendor/bin

Alternatively you can also create a symbolic link in the bin folder: ln -s ~/.composer/vendor/bin/phpcs /usr/local/bin/phpcs


2. Install Joomla Coding Standards

In order to have PHP Code Sniffer (phpcs) sniffing your Joomla projects for the right code style, you have to install the Joomla Coding Standards.

Using composer we can execute: composer global require joomla/coding-standards '[email protected]'

Notice that it says @alpha, that is because the coding standard is still in alpha state and we need to allow the installation of alpha status code. If we do not include the @alpha the coding standards will not install and throw this error.

Once the installation is done the coding standard will be installed in the global composer folder. The location of this folder depends on your operating system. Some popular locations are:

Mac / Linux

Windows

This is using Composer on Windows.

If you can't find it in any of the above folders, note that the folder you are looking for ends with joomlacoding-standards Finally we need to tell Code Sniffer that the Joomla coding standards exist.

Install Joomla Coding Standards

  1. Check if certain paths are already set by running phpcs --config-show
  2. You can get an answer that looks like this: installed_paths: /path/to/installation
  3. In step 2, if you see the installed_paths you need to copy that
  4. Set the Joomla Coding Standards path in phpcs by executing phpcs --config-set installed_paths /Users/user/.composer/vendor/joomla/coding-standards. If you copied any paths in step 2, include them here as well by separating them with a comma. The command looks like phpcs --config-set installed_paths [/to/path1],[/to/path2],[/Users/user/.composer/vendor/joomla/coding-standards]
  5. Verify the path is set correctly by running phpcs --config-show
  6. Verify that phpcs can see the Joomla codestyle by running phpcs -i
  7. The output should look like this: The installed coding standards are MySource, PEAR, PHPCS, PSR1, PSR2, Squiz, Zend and Joomla

Usage

You invoke the custom standard by phpcs --standard=Joomla file/to/sniff

To test a platform file using the provided platform coding standards, use phpcs --standard=build/phpcs/Joomla path/to/file/or/folder

Further documentation on the use of phpcs can be found at: [1]

3. IDE Integration

Everybody loves the console. It is, with no doubt, the most effective way to do whatever you need to do. Sometimes even Linux gurus need a little bit of comfort.

Phpstorm Codesniffer

Fortunately there is a plug-in available for PhpStorm, Eclipse and Netbeans that integrates the CodeSniffer into your favourite IDE, so any coding standard violations are shown like 'normal' errors.

PhpStorm

Code Sniffer is supported out of the box in PhpStorm. Go to Settings and under Editor Inspections you will see the list of sniffers you have installed.

Set Path to Code Sniffer

  1. Open Settings (CTRL-ALT-S / CMD-,)
  2. Go to Languages & Frameworks
  3. Click on PHP
  4. Click on Quality Tools
  5. Click on PHP cs fixer dropdown arrow
  6. The configuration is set to Local by default
  7. Click on the 3 dots behind it to open the configuration screen
  8. The first option is the PHP Code Sniffer (phpcs) path
  9. Click on the 3 dots behind the path to select the location of the phpcs file. See above on where phpcs may be installed on your site
  10. Click on Validate to make sure the path is correct and phpcs is working
  11. Click OK
Activating the Joomla Code Style
  1. Open Settings (CTRL-ALT-S / CMD-,)
  2. Go to Editor
  3. Click on Inspections
  4. In the list, go to PHP
  5. Click on PHP Code Sniffer Validation
  6. Click on the check box behind it to activate it
  7. Click the Reload button (2 arrows) to force a reload of rules from disk
  8. Joomla should now be available in the list. See following image:
  9. Click OK


PHP PSR-0, PSR-1 and PSR-2

Using PHP PSR-1 and PSR-2 Sniff

A CodeSniffer sniff to check against the PSR-x Coding Standard can be used as well. In that case you can select a different standard than Joomla.

Using Joomla Code style

It's nice to be able to check that the standards are respected. It's even nicer if PhpStorm helps you format properly too as you are coding. To use the Joomla code style in PhpStorm

  1. Open Settings (CTRL-ALT-S / CMD-,)
  2. Go to Editor
  3. Click on Code Style
  4. Select Joomla from the Scheme select box

PhpStorm / Alternative Method

NOTE: This method is outdated, but it might be useful if you are looking for a different integration. It also demonstrates the use of external tools in PhpStorm - so it shouldn't be deleted.

Phpstorm Code Sniffer Settings

The Code Sniffer can also be integrated easily as an external tool. PhpStorm will display the output in the console, including click-able links containing line and column numbers to the files that contain errors.

  • Click on 'Settings' and search for 'External tools'
  • Click 'Add...'
  • Choose a 'Name', 'Group' and 'Description'.
  • Click 'Output Filters'
    • Click 'Add...', Choose a name and enter under 'Regular expression to match output' the value: $FILE_PATH$:$LINE$:$COLUMN$
  • 'Program': Search for the phpcs executable on your system. You have to set the path to the phpcs.bat from the installed PHP_CodeSniffer PEAR package
    • For Unix based systems, the path is something like /usr/bin/phpcs
    • In XAMPP (windows), you can find the file in the PHP root folder (e.g. C:xamppphpphpcs.bat)
  • 'Parameters':
    • --standard=<path/to/joomla-platform>/build/phpcs/Joomla The path to the Joomla! coding standards.
    • --report=emacs The will generate a simple list containing links to the error files
    • Optionally you may want to specify -p for 'progress' or -n for 'errors only'.
    • The last parameter has to be $FilePath$ specifying the file or folder you want to sniff.

A typical 'Parameters' line on a Linux system might look like this:

You may now right click any file or folder and choose the sniffer from the context menu or add a new tool bar button with a nice Joomla! logo .

Netbeans

Netbeans has the sniffer functionality integrated into the core system.

  1. Start your Netbeans IDE
  2. Open Tools => Options => PHP => Code Analysis => Code Sniffer
  3. You have to set the path to phpcs.bat from the installed PHP_CodeSniffer PEAR package
    • For Unix based systems the path is something like /usr/bin/phpcs
    • In XAMPP (windows) you can find the file in the PHP root folder (e.g. C:xamppphpphpcs.bat)
  4. As 'Default Standard,' choose 'Joomla' to use the Joomla! standard
  5. Now you can click OK to start sniffing
  6. Open from the top menu Source => Inspect...
  7. Enjoy

Eclipse

1) Eclipse PTI

Phpstorm Code Sniffer Path

Installation is a breeze and follows the usual pattern:

  1. Help => Install New Software...
  2. Work with: Fill in one of the update site URLs found here: http://www.phpsrc.org/eclipse/pti/
  3. Select the desired tools
  4. Restart Eclipse.
2) Eclipse PTI settings

Phpstorm Codesniffer Xml

You are now able to sniff for code violations against common standards like PEAR or Zend etc.

To sniff against your own standards, specify their location and activate them (see screen shot 2)

  1. Window => Preferences
  2. PHP Tools => PHP CodeSniffer

Happy sniffing.

Phpstorm Codesniffer


Geany

  • Open a PHP file. (Otherwise the build menu is not accessible.) See this Screenshot
  • On the top menu, select Build->Set Build Commands.
  • Select the second field and name it as you wish. Enter this code in the Command: phpcs --standard=Joomla '%f' sed -e 's/^/%f /' egrep 'WARNING ERROR'
  • Enter this code in the Error Regular Expression field: (.+) [ ]s+([0-9]+) See this Screenshot
  • Select OK.
  • If the Message Window is not open, display it by selecting it in the top View menu.
  • When viewing any PHP file, press F9 to see the errors found. Screenshot


Atom

  • Install phpcs and the Joomla standards as described above.
  • In Atom > Preferences > Install install linter-phpcs and all its requirements.
  • In Atom > Preferences > Packages > linter-phpcs > Settings adjust
    • Executable Path to the path of your phpcs
    • Code Standard Or Config File: Joomla
    • Tab Width: 4

References

  • https://github.com/joomla/coding-standards - Joomla! Coding Standards
  • http://www.phpsrc.org/ PTI - PHP tools integration for Eclipse
  • http://sourceforge.net/projects/phpmdnb/ Netbeans plugin
  • http://hakre.wordpress.com/2010/03/06/php-code-sniffer-eclipse-and-wordpress/ - Excellent article. Just change 'Wordpress' for 'Joomla!' ;)
Retrieved from 'https://docs.joomla.org/index.php?title=Joomla_CodeSniffer&oldid=779588'