SublimeLinter:模块 phpcs 和 phpmd 不工作
SublimeLinter: modules phpcs and phpmd not working
在 Sublime Text 3
我已经通过 Package Manager
安装了以下软件包:
- SublimeLinter
- SublimeLinter-phpmd
- SublimeLinter-phpcs
- 和其他一些..
问题是 phpmd
或 phpcs
都不起作用。在 ST3 中打开 php
文件然后单击:ctrl
和` 我得到以下调试信息:
SublimeLinter: debug mode: on
SublimeLinter: temp directory: c:\users\alekspav\appdata\local\temp\SublimeLinter3-alekspav
SublimeLinter: annotations activated: <builtin>
SublimeLinter: json activated: <builtin>
SublimeLinter: WARNING: phpcs deactivated, cannot locate 'phpcs'
SublimeLinter: annotations activated: <builtin>
SublimeLinter: WARNING: jshint deactivated, cannot locate 'jshint'
SublimeLinter: php activated: C:\xampp\php\php.exe
SublimeLinter: WARNING: phpmd deactivated, cannot locate 'phpmd'
SublimeLinter: WARNING: htmltidy deactivated, cannot locate 'tidy'
SublimeLinter: WARNING: csslint deactivated, cannot locate 'csslint'
SublimeLinter: php: submitter.php ['C:\xampp\php\php.exe', '-l', '-n', '-d', 'display_errors=On', '-d', 'log_errors=Off']
SublimeLinter: php output:
No syntax errors detected in -
我对这两行特别感兴趣:
- SublimeLinter:警告:phpcs 已停用,无法找到“phpcs”
- SublimeLinter:警告:phpmd 已停用,无法找到'phpmd'
我试图解决这个问题的方法是编辑用户配置文件:
Sublime text 3: Preferences -> package settings -> sublime linter-> settings - user
然后添加 cmd
键如下:
"phpcs": {
"@disable": false,
"args": [],
"cmd": "C:/xampp/htdocs/web/vendor/bin/phpcs/",
"excludes": [],
"standard": "PSR2"
},
"phpmd": {
"@disable": false,
"args": [],
"cmd": "C:/xampp/htdocs/web/vendor/bin/phpmd/",
"excludes": [],
"rulesets": "cleancode,codesize,controversial,design,naming,unusedcode"
}
如您所料 - 这并没有解决问题。我还尝试在末尾写上没有 / 的路径,还尝试使用 \ delimeter 代替 /。而且我还尝试直接指定 PFAM 文件。还尝试使用 ${project} 变量而不是整个 C:/ 路径。 ST3 重启后我仍然收到警告。
我的另一个问题是 - 如何在调试 window 中输出“${project}”目录?因为我不确定它是否设置正确所以我想测试它。
更多信息:
Sublime 项目目录为:C:\xampp\htdocs\web\test.sublime-project
这里是 phpmd
和 phpcs
安装:
- "C:\xampp\htdocs\web\vendor\bin\phpcs\phpcbf.phar"
- "C:\xampp\htdocs\web\vendor\bin\phpcs\phpcs.phar"
- "C:\xampp\htdocs\web\vendor\bin\phpmd\phpmd.phar"
编辑:
看来我做错了。我在项目目录中添加了一个 composer.json
,内容如下:
{
"require-dev": {
"squizlabs/php_codesniffer": "2.*",
"phpmd/phpmd" : "@stable",
"mongodb/mongodb" : "@dev"
}
}
使用 composer install
命令安装所有内容后 - 我为我创建了 vendor
文件夹,里面有很多目录,包括 bin
文件夹。它现在拥有所有必要的文件,但我仍然遇到同样的错误。由于某种原因找不到模块。
好的,
我不确定这是错误还是功能,但我找到了问题的解决方案。
- 首先 - 您必须使用
pear
安装 phpcs
和 phpmd
!没有这个 - 你会看到来自初始 post. 的警告
phpcs: pear install PHP_CodeSniffer
phpmd: instructions here: http://pear.phpmd.org/ (I do not remember the name of another repository but during the first installation you will encounter the error that some lib is missing and you will be prompted with a text to add one more repository which has missing dependencies for phpmd pear installation. All easy)
启动ST3
并检查。无需编辑配置。两个模块都应该在 Sublime Text 3
中工作!但是我们现在使用 pear
模块而不是 composer
模块。我最初的想法是使用 conmposer
。更容易维护和更新。
如果您不熟悉它 - google。在项目目录中,您应该有一个名为 composer.json
的文件,其内容类似于:
{
"require-dev": {
"squizlabs/php_codesniffer": "2.*",
"phpmd/phpmd" : "@stable"
}
}
然后使用 Windows command prompt
和 composer install
命令安装所有模块
如初始 post 中所述 - 在 SublimeLinter
的用户配置中使用以下配置:
"phpcs": {
"@disable": false,
"args": [],
"cmd": "${project}/vendor/bin/phpcs.bat",
"excludes": [],
"standard": "${project}/vendor/squizlabs/php_codesniffer/CodeSniffer/Standards/PSR2/ruleset.xml"
},
"phpmd": {
"@disable": false,
"args": [],
"cmd": "${project}/vendor/bin/phpmd.bat",
"excludes": [],
"rulesets": "cleancode,codesize,controversial,design,naming,unusedcode"
}
现在重新启动 Sublime test 3
并打开调试并打开 PHP
文件。结果是:
reloading plugin SublimeLinter-phpcs.linter
SublimeLinter: phpcs linter loaded
reloading plugin SublimeLinter-phpmd.linter
SublimeLinter: phpmd linter loaded
...
reloading settings Packages/User/SublimeLinter.sublime-settings
SublimeLinter: phpcs activated: C:\xampp\php\phpcs.bat
SublimeLinter: phpmd activated: C:\xampp\php\phpmd.bat
...
SublimeLinter: phpcs: index.php ['C:/xampp/htdocs/web/vendor/bin/phpcs.bat', '--report=checkstyle', '--standard=C:/xampp/htdocs/web/vendor/squizlabs/php_codesniffer/CodeSniffer/Standards/PSR2/ruleset.xml']
SublimeLinter: phpcs output:
.. errors in PHP file listed
Package Control: Skipping automatic upgrade, last run at 2016-09-05 17:12:20, next run at 2016-09-05 18:12:20 or after
...
SublimeLinter: phpmd: index.php ['C:/xampp/htdocs/web/vendor/bin/phpmd.bat', '@', 'text', 'cleancode,codesize,controversial,design,naming,unusedcode']
SublimeLinter: phpmd output:
.. errors in PHP file listed
如您所见 - SublimeLinter
首先加载 PHP
目录中的 pear
bat
s!但是当提交 PHP
文件进行分析时 - 它正在使用项目目录中的新 bat
s。
我的解释是 SublimeLinter
在使用 composer
等效项之前总是需要安装 pear
phpcs
和 phpmd
。这很愚蠢,如果你问我..但我找不到任何其他解决方案。
我也很难让 sublimeLinter-phpmd 工作。这是我修复它的方法:
假设:
- 你在 windows
- 你已经安装了 sublime-text 3 和 sublimeLinter
步骤:
- 安装 pear:http://pear.php.net/manual/en/installation.getting.php
- 重要: 将 pear 目录添加到 $PATH
- 使用 pear 安装 phpmd 在你的 pear 目录下:https://github.com/SublimeLinter/SublimeLinter-phpmd
- 重新启动 sublime-text 3。
对我来说,这是因为我错过了第 2 步,所以 phpmd linter 无法工作。
无需使用 composer 安装每个项目的 phpmd。安装SublimeLinter-phpmd后无需手动修改SublimeLinter的设置。
希望对您有所帮助。
在 Sublime Text 3
我已经通过 Package Manager
安装了以下软件包:
- SublimeLinter
- SublimeLinter-phpmd
- SublimeLinter-phpcs
- 和其他一些..
问题是 phpmd
或 phpcs
都不起作用。在 ST3 中打开 php
文件然后单击:ctrl
和` 我得到以下调试信息:
SublimeLinter: debug mode: on
SublimeLinter: temp directory: c:\users\alekspav\appdata\local\temp\SublimeLinter3-alekspav
SublimeLinter: annotations activated: <builtin>
SublimeLinter: json activated: <builtin>
SublimeLinter: WARNING: phpcs deactivated, cannot locate 'phpcs'
SublimeLinter: annotations activated: <builtin>
SublimeLinter: WARNING: jshint deactivated, cannot locate 'jshint'
SublimeLinter: php activated: C:\xampp\php\php.exe
SublimeLinter: WARNING: phpmd deactivated, cannot locate 'phpmd'
SublimeLinter: WARNING: htmltidy deactivated, cannot locate 'tidy'
SublimeLinter: WARNING: csslint deactivated, cannot locate 'csslint'
SublimeLinter: php: submitter.php ['C:\xampp\php\php.exe', '-l', '-n', '-d', 'display_errors=On', '-d', 'log_errors=Off']
SublimeLinter: php output:
No syntax errors detected in -
我对这两行特别感兴趣:
- SublimeLinter:警告:phpcs 已停用,无法找到“phpcs”
- SublimeLinter:警告:phpmd 已停用,无法找到'phpmd'
我试图解决这个问题的方法是编辑用户配置文件:
Sublime text 3: Preferences -> package settings -> sublime linter-> settings - user
然后添加 cmd
键如下:
"phpcs": {
"@disable": false,
"args": [],
"cmd": "C:/xampp/htdocs/web/vendor/bin/phpcs/",
"excludes": [],
"standard": "PSR2"
},
"phpmd": {
"@disable": false,
"args": [],
"cmd": "C:/xampp/htdocs/web/vendor/bin/phpmd/",
"excludes": [],
"rulesets": "cleancode,codesize,controversial,design,naming,unusedcode"
}
如您所料 - 这并没有解决问题。我还尝试在末尾写上没有 / 的路径,还尝试使用 \ delimeter 代替 /。而且我还尝试直接指定 PFAM 文件。还尝试使用 ${project} 变量而不是整个 C:/ 路径。 ST3 重启后我仍然收到警告。
我的另一个问题是 - 如何在调试 window 中输出“${project}”目录?因为我不确定它是否设置正确所以我想测试它。
更多信息:
Sublime 项目目录为:C:\xampp\htdocs\web\test.sublime-project
这里是 phpmd
和 phpcs
安装:
- "C:\xampp\htdocs\web\vendor\bin\phpcs\phpcbf.phar"
- "C:\xampp\htdocs\web\vendor\bin\phpcs\phpcs.phar"
- "C:\xampp\htdocs\web\vendor\bin\phpmd\phpmd.phar"
编辑:
看来我做错了。我在项目目录中添加了一个 composer.json
,内容如下:
{
"require-dev": {
"squizlabs/php_codesniffer": "2.*",
"phpmd/phpmd" : "@stable",
"mongodb/mongodb" : "@dev"
}
}
使用 composer install
命令安装所有内容后 - 我为我创建了 vendor
文件夹,里面有很多目录,包括 bin
文件夹。它现在拥有所有必要的文件,但我仍然遇到同样的错误。由于某种原因找不到模块。
好的,
我不确定这是错误还是功能,但我找到了问题的解决方案。
- 首先 - 您必须使用
pear
安装phpcs
和phpmd
!没有这个 - 你会看到来自初始 post. 的警告
phpcs: pear install PHP_CodeSniffer
phpmd: instructions here: http://pear.phpmd.org/ (I do not remember the name of another repository but during the first installation you will encounter the error that some lib is missing and you will be prompted with a text to add one more repository which has missing dependencies for phpmd pear installation. All easy)
启动ST3
并检查。无需编辑配置。两个模块都应该在 Sublime Text 3
中工作!但是我们现在使用 pear
模块而不是 composer
模块。我最初的想法是使用 conmposer
。更容易维护和更新。
如果您不熟悉它 - google。在项目目录中,您应该有一个名为 composer.json
的文件,其内容类似于:
{
"require-dev": {
"squizlabs/php_codesniffer": "2.*",
"phpmd/phpmd" : "@stable"
}
}
然后使用 Windows command prompt
和 composer install
命令安装所有模块
如初始 post 中所述 - 在
SublimeLinter
的用户配置中使用以下配置:"phpcs": { "@disable": false, "args": [], "cmd": "${project}/vendor/bin/phpcs.bat", "excludes": [], "standard": "${project}/vendor/squizlabs/php_codesniffer/CodeSniffer/Standards/PSR2/ruleset.xml" }, "phpmd": { "@disable": false, "args": [], "cmd": "${project}/vendor/bin/phpmd.bat", "excludes": [], "rulesets": "cleancode,codesize,controversial,design,naming,unusedcode" }
现在重新启动 Sublime test 3
并打开调试并打开 PHP
文件。结果是:
reloading plugin SublimeLinter-phpcs.linter
SublimeLinter: phpcs linter loaded
reloading plugin SublimeLinter-phpmd.linter
SublimeLinter: phpmd linter loaded
...
reloading settings Packages/User/SublimeLinter.sublime-settings
SublimeLinter: phpcs activated: C:\xampp\php\phpcs.bat
SublimeLinter: phpmd activated: C:\xampp\php\phpmd.bat
...
SublimeLinter: phpcs: index.php ['C:/xampp/htdocs/web/vendor/bin/phpcs.bat', '--report=checkstyle', '--standard=C:/xampp/htdocs/web/vendor/squizlabs/php_codesniffer/CodeSniffer/Standards/PSR2/ruleset.xml']
SublimeLinter: phpcs output:
.. errors in PHP file listed
Package Control: Skipping automatic upgrade, last run at 2016-09-05 17:12:20, next run at 2016-09-05 18:12:20 or after
...
SublimeLinter: phpmd: index.php ['C:/xampp/htdocs/web/vendor/bin/phpmd.bat', '@', 'text', 'cleancode,codesize,controversial,design,naming,unusedcode']
SublimeLinter: phpmd output:
.. errors in PHP file listed
如您所见 - SublimeLinter
首先加载 PHP
目录中的 pear
bat
s!但是当提交 PHP
文件进行分析时 - 它正在使用项目目录中的新 bat
s。
我的解释是 SublimeLinter
在使用 composer
等效项之前总是需要安装 pear
phpcs
和 phpmd
。这很愚蠢,如果你问我..但我找不到任何其他解决方案。
我也很难让 sublimeLinter-phpmd 工作。这是我修复它的方法:
假设:
- 你在 windows
- 你已经安装了 sublime-text 3 和 sublimeLinter
步骤:
- 安装 pear:http://pear.php.net/manual/en/installation.getting.php
- 重要: 将 pear 目录添加到 $PATH
- 使用 pear 安装 phpmd 在你的 pear 目录下:https://github.com/SublimeLinter/SublimeLinter-phpmd
- 重新启动 sublime-text 3。
对我来说,这是因为我错过了第 2 步,所以 phpmd linter 无法工作。
无需使用 composer 安装每个项目的 phpmd。安装SublimeLinter-phpmd后无需手动修改SublimeLinter的设置。
希望对您有所帮助。