5
votes

Im trying to use CodeSniffer in PhpStorm.

In settings->PHP->CLI Interpreter I linked to the php.exe Im using https://windows.php.net/ but also tried it with Cygwin and XAMPP.

PhpStorm shows me the right PHP Version 7.2.5 and the php.ini

In the CodeSniffer configuration I selected the phpcs.bat When Im clicking on Validate I just got

Can not run PHP Code

Also added everything to the PATH

Did I miss something?

enter image description here

enter image description here

enter image description here

enter image description here

enter image description here

8
Try running the phpcs file instead of the phpcs.bat file - apokryfos
Then I get Cannot run program "...\phpcs": CreateProcess error=193, %1 is not a valid Win32-Application - Ted Logan
1) Screenshots with settings please. Details matters. 2) Is you php.exe is system-wide discoverable? I mean -- will it show the right path if you run where php in terminal (outside of IDE)? - LazyOne
I added some screens - Ted Logan
You are executing phpcs.bat -- perfect. .BAT file inside calls your php.exe (as it does not know anything about PhpStorm and PHP Interpreters and stuff) ... and right now it looks like php.exe is not actually discoverable by OS. You need to put the path to it into system PATH variable. That's what error message suggests me... - LazyOne

8 Answers

2
votes

You should put phpcs.bat and phpcs in your PHP folder - e.g. d:\program\php\phpcs. The CodeSniffer itself should reside in d:\program\php\PEAR\PHP\CodeSniffer - there will be a script autoload.php and a subfolder src.

Then in Settings -> Languages & Frameworks -> PHP -> Code Sniffer you specify the path to phpcs.bat and Validate it.

Then in Settings -> Editor -> Inspections you find the node PHP Code Sniffer validation and enable it. After enabling it you will be able to configure it - specifically choose the coding standard.

enter image description here enter image description here

This is my phpcs

#!D:\PROGRAM\Inet\Design\php\php.exe
<?php
/**
 * PHP_CodeSniffer detects violations of a defined coding standard.
 *
 * @author    Greg Sherwood <[email protected]>
 * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600)
 * @license   https://github.com/squizlabs/PHP_CodeSniffer/blob/master/licence.txt BSD Licence
 */

if (is_file(__DIR__.'/../autoload.php') === true) {
    include_once __DIR__.'/../autoload.php';
} else {
    include_once 'PHP/CodeSniffer/autoload.php';
}

$runner   = new PHP_CodeSniffer\Runner();
$exitCode = $runner->runPHPCS();
exit($exitCode); 

This is my phpcs.bat

@echo off
REM PHP_CodeSniffer detects violations of a defined coding standard.
REM 
REM @author    Greg Sherwood <[email protected]>
REM @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600)
REM @license   https://github.com/squizlabs/PHP_CodeSniffer/blob/master/licence.txt BSD Licence

if "%PHPBIN%" == "" set PHPBIN=D:\PROGRAM\Inet\Design\php\php.exe
if not exist "%PHPBIN%" if "%PHP_PEAR_PHP_BIN%" neq "" goto USE_PEAR_PATH
GOTO RUN
:USE_PEAR_PATH
set PHPBIN=%PHP_PEAR_PHP_BIN%
:RUN
"%PHPBIN%" "D:\PROGRAM\Inet\Design\php\phpcs" %* 

This is my PEAR_ENV.reg which I have imported into Windows Registry

REGEDIT4
[HKEY_CURRENT_USER\Environment]
"PHP_PEAR_SYSCONF_DIR"="D:\\PROGRAM\\Inet\\Design\\php"
"PHP_PEAR_INSTALL_DIR"="D:\\PROGRAM\\Inet\\Design\\php\\pear"
"PHP_PEAR_DOC_DIR"="D:\\PROGRAM\\Inet\\Design\\php\\docs"
"PHP_PEAR_BIN_DIR"="D:\\PROGRAM\\Inet\\Design\\php"
"PHP_PEAR_DATA_DIR"="D:\\PROGRAM\\Inet\\Design\\php\\data"
"PHP_PEAR_PHP_BIN"="D:\\PROGRAM\\Inet\\Design\\php\\php.exe"
"PHP_PEAR_TEST_DIR"="Z:\\Temp\\"
0
votes

I'm using OpenServer with PHP 7.0-64x I only have composer and PHP in my Env. vars.

but before i tested it in console and everything was just fine phpcs version: 3.3.2 (latest for these days) smth like this:

C:\OpenServer\domains\phpWorkingWithFiles\vendor\bin>phpcs --standard=PSR2 C:\OpenServer\domains\phpWorkingWithFiles\classes\Recipe.php

or like this

C:\OpenServer\domains\phpWorkingWithFiles>vendor\bin\phpcs classes/ --colors

had the same error I had reran the Phpstorm and it started working

0
votes

i had this problem too;then i remove phpcs which is in the same dir with phpcs.bat,and it worked.

0
votes

We also had the same problem and there was no PHP installed.

To be able to load code sniffer you MUST have PHP installed (locally on your PC/Laptop)!

0
votes

Try to run it with php cli to see the error text. In my case it was:

$ php /home/alex/apps/code-style/code-style/scripts/phpcs.php
PHP Fatal error:  require_once(): Failed opening required '/home/daniel/apps/code-style/code-style/scripts/../vendor/autoload.php' (include_path='.:/usr/share/php') in /home/daniel/apps/code-style/code-style/scripts/phpcs.php on line 3

(I forgot to run composer install command in project root).

0
votes

I know this is not a satisfying solution, but for me (on Windows 10, having installed CodeSniffer as global composer installation) it got resolved by restarting PhpStorm.

0
votes

For me restarting PC solved issue. Tried restarting PHPStorm and relogin from Windows user, but did not work

0
votes

In my case adding PHP to Windows Environment path solved the issue.

Even though, I set the path of PHP in PHPStorm Settings -> Language & Frameworks-> PHP -> CLI Interpreter I still got this error, until I set it in Windows Environment Variables.

In my case error message was Can not run PHP_CodeSniffer when I tried to validate the path of phpcs.bat