php - Sublime-phpcs - 无法使 PHP MD 和 CS 包正常运行

标签 php pear sublimetext3 phpcodesniffer phpmd

我一直在尝试配置 sublime-phpcs。我已经安装了 pear 并从命令行安装了 PHP_CodeSniffer ,和PHPMD使用他们记录的安装过程。 PHP 和 pear 位于 d:/Program Files/xampp/php 和 d:/Program Files/xampp/php/pear 的路径中,我可以在目录之外使用它们。我在用户配置文件中将 PHPCodeSniffer、PHPMD 和 showdebug 设置为 true,但在保存时没有突出显示或概述任何内容,只能在控制台中看到错误。说出以下内容后会弹出错误:

[Phpcs] phpcs --report=checkstyle --standard=PSR2 -n D:\htdocs\ubc\app\main\source\plugins\project\core\class-cse-meta-boxes.php
[Phpcs] phpcs --report=checkstyle --standard=PSR2 -n D:\htdocs\ubc\app\main\source\plugins\project\core\class-cse-meta-boxes.php
[Phpcs] cwd: C:\Users\mtpultz
Exception in thread Thread-183:
Traceback (most recent call last):
File "X/subprocess.py", line 1090, in _execute_child
FileNotFoundError: [WinError 2] The system cannot find the file specified

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "X/threading.py", line 639, in _bootstrap_inner
File "X/threading.py", line 596, in run
File "phpcs in C:\Users\mtpultz\AppData\Roaming\Sublime Text 3\Installed Packages\Phpcs.sublime-package", line 433, in run
File "phpcs in C:\Users\mtpultz\AppData\Roaming\Sublime Text 3\Installed Packages\Phpcs.sublime-package", line 139, in get_errors
File "phpcs in C:\Users\mtpultz\AppData\Roaming\Sublime Text 3\Installed Packages\Phpcs.sublime-package", line 215, in execute
File "phpcs in C:\Users\mtpultz\AppData\Roaming\Sublime Text 3\Installed Packages\Phpcs.sublime-package", line 218, in parse_report
File "phpcs in C:\Users\mtpultz\AppData\Roaming\Sublime Text 3\Installed Packages\Phpcs.sublime-package", line 169, in shell_out
File "X/subprocess.py", line 818, in __init__
File "X/subprocess.py", line 1096, in _execute_child
FileNotFoundError: [WinError 2] The system cannot find the file specified

所有安装完成后,我已重新启动服务器并重新打开 sublimetext。

更新 为了响应 Sergey 的帮助,将 phpcs 可执行路径添加到用户设置中。

[Phpcs] phpmd D:\htdocs\ubc\app\main\source\plugins\ubc\core\class-cse-meta-boxes.php text codesize,unusedcode,naming
[Phpcs] phpmd D:\htdocs\ubc\app\main\source\plugins\ubc\core\class-cse-meta-boxes.php text codesize,unusedcode,naming
[Phpcs] cwd: C:\Users\mtpultz
Exception in thread Thread-183:
Traceback (most recent call last):
  File "X/subprocess.py", line 1090, in _execute_child
  FileNotFoundError: [WinError 2] The system cannot find the file specified

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "X/threading.py", line 639, in _bootstrap_inner
  File "X/threading.py", line 596, in run
  File "phpcs in C:\Users\mtpultz\AppData\Roaming\Sublime Text 3\Installed Packages\Phpcs.sublime-package", line 435, in run
  File "phpcs in C:\Users\mtpultz\AppData\Roaming\Sublime Text 3\Installed Packages\Phpcs.sublime-package", line 139, in get_errors
  File "phpcs in C:\Users\mtpultz\AppData\Roaming\Sublime Text 3\Installed Packages\Phpcs.sublime-package", line 311, in execute
  File "phpcs in C:\Users\mtpultz\AppData\Roaming\Sublime Text 3\Installed Packages\Phpcs.sublime-package", line 314, in parse_report
  File "phpcs in C:\Users\mtpultz\AppData\Roaming\Sublime Text 3\Installed Packages\Phpcs.sublime-package", line 169, in shell_out
  File "X/subprocess.py", line 818, in __init__
  File "X/subprocess.py", line 1096, in _execute_child
FileNotFoundError: [WinError 2] The system cannot find the file specified

更新2 为了响应 Sergey 的帮助,将 phpmd 可执行路径添加到用户设置中。

[Phpcs] D:\Program Files\xampp\php\pear\phing\tasks\ext\phpmd D:\htdocs\ubc\app\main\source\plugins\ubc-petrography\core\class-cse-meta-boxes.php text codesize,unusedcode,naming
[Phpcs] D:\Program Files\xampp\php\pear\phing\tasks\ext\phpmd D:\htdocs\ubc\app\main\source\plugins\ubc-petrography\core\class-cse-meta-boxes.php text codesize,unusedcode,naming
[Phpcs] cwd: C:\Users\mtpultz
Exception in thread Thread-18:
Traceback (most recent call last):
  File "X/subprocess.py", line 1090, in _execute_child
PermissionError: [WinError 5] Access is denied

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "X/threading.py", line 639, in _bootstrap_inner
  File "X/threading.py", line 596, in run
  File "phpcs in C:\Users\mtpultz\AppData\Roaming\Sublime Text 3\Installed Packages\Phpcs.sublime-package", line 435, in run
  File "phpcs in C:\Users\mtpultz\AppData\Roaming\Sublime Text 3\Installed Packages\Phpcs.sublime-package", line 139, in get_errors
  File "phpcs in C:\Users\mtpultz\AppData\Roaming\Sublime Text 3\Installed Packages\Phpcs.sublime-package", line 311, in execute
  File "phpcs in C:\Users\mtpultz\AppData\Roaming\Sublime Text 3\Installed Packages\Phpcs.sublime-package", line 314, in parse_report
  File "phpcs in C:\Users\mtpultz\AppData\Roaming\Sublime Text 3\Installed Packages\Phpcs.sublime-package", line 169, in shell_out
  File "X/subprocess.py", line 818, in __init__
  File "X/subprocess.py", line 1096, in _execute_child
PermissionError: [WinError 5] Access is denied

有人遇到过这个问题吗?

最佳答案

尝试打开 PHPCS 设置:首选项 → 包设置 → PHP 代码嗅探器 → 设置 — 用户

将其添加到设置文件中:

{
    "phpcs_executable_path": "some_path"
}

其中some_path是phpcs的可执行路径(如果您在Windows中通过PEAR命令安装它,则其可执行文件是PHP根文件夹中的phpcs.bat)。 :)

例如,我安装了代码嗅探器,其可执行文件是D:\dev\php\phpcs.bat。所以我的配置是

{
    "phpcs_executable_path": "D:\\dev\\php\\phpcs.bat",
    // Enable debug to see verbose output
    "show_debug": true
}

Sublime-phpcs 也不适合我,直到我在其配置中设置了 phpcs_executable_path 为止。

更新:正如我从您的问题更新中看到的,现在您还需要设置phpmd_executable_path。另外,我将在此 list 中使用您的 PHP 路径。

{
    "phpcs_executable_path": "D:\\Program Files\\xampp\\php\\phpcs.bat",
    "phpmd_executable_path": "D:\\Program Files\\xampp\\php\\phpmd.bat",
    // Enable debug to see verbose output
    "show_debug": true
}

关于php - Sublime-phpcs - 无法使 PHP MD 和 CS 包正常运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24846242/

相关文章:

javascript - 使用 Composer 更好地管理我的依赖项

curl - PHPUnit 无法识别 cURL 扩展 - 无法安装 selenium 测试

php - 在 MAC OS X 中使用 PEAR

javascript - 如何遍历这个javascript对象

php - HTTP 请求的 keep_alive 和 persistent 选项有什么区别?

php - PEAR 和 PEAR2 有什么区别?

sublimetext3 - Sublime Text 3中不同项目窗口之间的切换

keyboard-shortcuts - 如何在 Mac 中为 Sublime Text 移动队列?

sublimetext3 - Sublime3 的 Markdown 突出显示在 Ubuntu 中不起作用(在 Windows 中运行良好)

php - jQuery Endless/Infinite Scroll 和 PHP-MySQL 教程