Sublime-phpcs -不能让PHP MD和CS包正常工作


Sublime-phpcs - Can't get PHP MD and CS packages to function properly

我一直在尝试配置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

Update:我从你的问题更新中看到,现在你还需要设置phpmd_executable_path。此外,我将在此清单中使用您的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
}