如果运行phpcs,PhpStorm会引发错误

时间:2019-02-26 08:52:54

标签: phpstorm phpcs

首先,让我列出一些版本,以便您了解设置。

操作系统: Windows 10
php:带有xDebug 2.6.1的7.2.7 NTS已激活
PhpStorm::2016.2.2
PHP_CodeSniffer::Squiz(http://www.squiz.net)版本3.4.0(稳定)
:1.10.7

现在让我描述一下问题:

嗅探器代码是通过pear安装的。我正在使用以下bat脚本来启动嗅探器。

@echo off

set folder=C:\Program Files\php
set phpcs=%folder%\phpcs

php "%phpcs%" %*

如果我使用以下命令通过PowerShell启动代码嗅探器:

phpcs.bat index.php --standard=PSR2 --encoding=utf-8 --report=xml

我得到一个有效的输出:

xml version="1.0" encoding="UTF-8"?>
<file name="C:\Users\simon\Documents\Repositories\mm-BIT\CatalogGenerator\index.php" errors="3" warnings="0" fixable="3">
    <error line="1" column="1" source="Generic.Files.LineEndings.InvalidEOLChar" severity="5" fixable="1">End of line character is invalid; expected &quot;\n&quot; but found &quot;\r\n&quot;</error>
    <error line="124" column="1" source="PSR2.Methods.FunctionCallSignature.SpaceBeforeOpenBracket" severity="5" fixable="1">Space before opening parenthesis of function call prohibited</error>
    <error line="129" column="1" source="PSR2.Methods.FunctionCallSignature.SpaceBeforeOpenBracket" severity="5" fixable="1">Space before opening parenthesis of function call prohibited</error>
</file>
</phpcs>

在PHPStorm中,设置如下:

enter image description here

enter image description here

如果我验证了安装,PhpStorm会告诉我一切都很好:

enter image description here

“检查”页面上的编码标准数据已自动加载,因此似乎也可以正常工作。

如果PhpStorm运行脚本,则会出现以下错误:

PHP Code Sniffer
phpcs: xml version="1.0" encoding="UTF-8"?>

我正在通过被称为的脚本公开一些数据:

PHP代码嗅探器

phpcs: C:/temp/___1.tmp/Core/DataContainers/Language.php --standard=PSR2 --encoding=utf-8 --report=xml
command: php "C:\Program Files\php\phpcs" C:/temp/___1.tmp/Core/DataContainers/Language.php --standard=PSR2 --encoding=utf-8 --report=xml
xml version="1.0" encoding="UTF-8"?>

我确实检查了temp文件夹的写权限,并且正在检查文件是否在上述路径上正确创建。创建文件夹后,我确实复制了该文件夹,并成功在PowerShell中手动运行了命令行。

php "C:\Program Files\php\phpcs"    
C:/temp/___.tmp/Core/DataContainers/Modules/SimpleTableModule.php -- 
standard=PSR2 --encoding=utf-8 --report=xml

wich提供以下输出:

<?xml version="1.0" encoding="UTF-8"?>
<phpcs version="3.4.0">
xml version="1.0" encoding="UTF-8"?>
<file name="C:\temp\___.tmp\Core\DataContainers\Modules\SimpleTableModule.php" errors="1" warnings="1" fixable="1">
    <warning line="82" column="114" source="Generic.Files.LineLength.TooLong" severity="5" fixable="0">Line exceeds 120 characters; contains 123 characters</warning>
    <error line="106" column="1" source="PSR2.Files.EndFileNewline.NoneFound" severity="5" fixable="1">Expected 1 newline at end of file; 0 found</error>
</file>
</phpcs>

如果您能给我一些让我非常高兴的想法,我不知道该如何解决。

1 个答案:

答案 0 :(得分:1)

问题已解决,我确实用官方脚本替换了phpcs.bat文件的内容:

@echo off
REM PHP_CodeSniffer detects violations of a defined coding standard.
REM 
REM @author    Greg Sherwood <gsherwood@squiz.net>
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 "%PHP_PEAR_PHP_BIN%" neq "" (
    set PHPBIN=%PHP_PEAR_PHP_BIN%
) else set PHPBIN=php

"%PHPBIN%" "%~dp0\phpcs" %*

Script in the repository

我以前尝试过此方法,但是它没有用,我还给了自己对PHP安装文件夹的完全访问权限。看来问题已解决。

非常感谢大家的光临。

编辑:我再次检查了我的bat文件,它与git存储库中的文件不完全相同。我确实将旧代码留在文件中作为注释。今天早上我清理完这个嗅探器后,它不再工作了,在我再次阅读评论后,该功能又恢复了。因此,这是当前工作状态下文件的完整内容:

@echo off
REM PHP_CodeSniffer detects violations of a defined coding standard.
REM 
REM @author    Greg Sherwood <gsherwood@squiz.net>
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 "%PHP_PEAR_PHP_BIN%" neq "" (
    set PHPBIN=%PHP_PEAR_PHP_BIN%
) else set PHPBIN=php

"%PHPBIN%" "%~dp0\phpcs" %*
REM End of file

我们确实在另一台安装了相同软件的计算机上确认了此行为,所以这似乎是问题所在。

Edit2 :似乎您只需要在原始脚本的最后一行之后添加注释行即可。我确实更新了目前正在使用的代码段。