3

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"
    }

正如您所猜到的 - 这并没有解决问题。我还尝试在末尾写不带 / 的路径,并尝试使用 \ 分隔符而不是 /。而且我还尝试直接指定 PFAM 文件。并且还尝试使用 ${project} 变量而不是整个 C:/ 路径。ST3 重启后我仍然收到警告。

我的另一个问题是 - 如何在调试窗口中输出“${project}”目录?因为我不确定它是否设置正确,所以我想对其进行测试。

更多信息:

Sublime 项目目录为:C:\xampp\htdocs\web\test.sublime-project

这是 phpmdphpcs安装:

  • "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文件夹。它现在拥有所有必要的文件,但我仍然遇到同样的错误。由于某种原因找不到模块。

4

2 回答 2

2

好的,

我不确定这是错误还是功能,但我找到了问题的解决方案。

  1. 首先 - 你必须安装phpcsphpmd使用pear!没有这个 - 您将看到初始帖子中的警告。

phpcs:梨安装 PHP_CodeSniffer

phpmd:此处的说明:http ://pear.phpmd.org/ (我不记得另一个存储库的名称,但是在第一次安装期间,您会遇到缺少某些库的错误,并且会提示您添加文本又一个缺少 phpmd pear 安装依赖项的存储库。一切都很简单)

启动ST3并检查。无需编辑配置。两个模块都应该在Sublime Text 3!但是我们现在使用的是pear模块而不是composer模块。我最初的想法是使用conmposer. 维护和更新要容易得多。

如果您不熟悉它 - 谷歌。在项目目录中,您应该有一个名为的文件composer.json,其内容类似于:

{
    "require-dev": {
        "squizlabs/php_codesniffer":    "2.*",
        "phpmd/phpmd" :                 "@stable"
    }
}

然后使用Windows command promptwithcomposer install命令安装所有模块

  1. 如最初的帖子中所述 - 在用户配置中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

如您所见 -首先将sSublimeLinter加载到目录中!但是在提交文件进行分析时 - 它正在使用项目目录中的新 s。pear batPHPPHPbat

我的解释是在使用等价物之前SublimeLinter总是需要pear phpcsphpmd安装。composer如果您问我,这很愚蠢..但我找不到任何其他解决方案。

于 2016-09-05T15:00:14.770 回答
0

我也很难让 sublimeLinter-phpmd 工作。这是我修复它的方法:

假设:

  • 你在窗户上
  • 你安装了 sublime-text 3 和 sublimeLinter

脚步:

  1. 安装梨: http: //pear.php.net/manual/en/installation.getting.php
  2. 重要:将 pear 目录添加到 $PATH
  3. 在你的 pear 目录下使用 pear 安装 phpmd :https ://github.com/SublimeLinter/SublimeLinter-phpmd
  4. 重新启动崇高文本 3。

对我来说,这是因为我错过了第 2 步,所以 phpmd linter 无法工作。

无需使用 composer 安装每个项目的 phpmd。安装 SublimeLinter-phpmd 后无需手动修改 SublimeLinter 的设置。

愿这有帮助。

于 2017-06-15T10:02:04.430 回答