onoya.dev

Setup CodeSniffer for CakePHP 2.x in VSCode (Per-Project Installation)

I have recently switched my code editor from Sublime Text 3 to Visual Studio Code (VSCode). Here I’m going to share how I integrated PHP CodeSniffer with CakePHP 2 standards.

Before I’m going to proceed, I just want to let you know that the code sniffer for CakePHP 2 uses an older version of PHP CodeSniffer. So if you have the code sniffer already installed globally to your computer, you’d want to check the version. If the phpcs version is greater than version 1.5.6, you would have to either downgrade it or have it installed per-project. I prefer to do the latter and I’m going to show you how I did it. So let’s get started!

Install Composer

First of all, you have to install composer. As for composer, you may also install it locally/per-project, but I prefer to install it globally.

For the installation, you may find it in their website here.

Install PHP CodeSniffer

composer require --dev squizlabs/php_codesniffer:^1.5

Install the CakePHP 2 Coding Standard

Go to your CakePHP 2.x project’s root directory, and then run the following command:

composer require --dev cakephp/cakephp-codesniffer:^1.0.0

When you have the packages above installed, let’s test it by showing list of coding standards: (Make sure that you are still inside the root directory of your project.)

./vendors/bin/phpcs -i // Output The installed coding standards are MySource, PEAR, PHPCS, PSR1, PSR2, Squiz and Zend

As you can see from the result above, CakePHP is not listed in the installed coding standards even if we have the CakePHP code sniffer package installed. It doesn’t get configured automatically.

We have to configure phpcs manually by running the command below:

./vendors/bin/phpcs --config-set installed_paths "$(pwd)/vendors/cakephp/cakephp-codesniffer" // Output Config value "installed_paths" added successfully

Let’s check it again

./vendors/bin/phpcs -i // Output The installed coding standards are MySource, PEAR, PHPCS, PSR1, PSR2, Squiz, Zend and CakePHP

And as you can see, we are able to successfully ad the CakePHP coding standard.

You can now run code check from the terminal with the command below:

./vendors/bin/phpcs -p --extensions=php --standard=CakePHP ./app

Install PHP CodeSniffer for Visual Studio Code

Open Visual Studio Code and install the phpcs extension.

https://marketplace.visualstudio.com/items?itemName=ikappas.phpcs

Next, you have to open your project folder in VSCode.

Now open the Workspace Settings and add the configuration below:

{ "phpcs.executablePath": "vendors/bin/phpcs", "phpcs.standard": "CakePHP", }

Now try to open some random php file and convert the indentation to spaces. You should see some warning saying, “Tabs must be used to indent lines”.

And that’s it!

If you encounter “Unable to locate phpcs” error, try setting the absolute path of your phpcs like below:

{ "phpcs.executablePath": "/Users/ono/codes/cakephp-app/vendors/bin/phpcs", "phpcs.standard": "CakePHP", }