SublimeLinter: модули phpcs и phpmd не работают

В Sublime Text 3 Я установил через Package Manager следующие пакеты:

  • SublimeLinter
  • SublimeLinter-phpmd
  • SublimeLinter-phpcs
  • и несколько других..

Проблема в том, что ни phpmd или же phpcs работают. При открытии php файл в ST3, а затем нажмите: 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 - 

Меня особенно интересуют эти 2 строки:

  • 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.

Другой мой вопрос - как вывести каталог "${project}" в окне отладки? Потому что я не уверен, что он установлен правильно, поэтому я хочу проверить это.

Больше информации:

Возвышенный каталог проекта: C:\xampp\htdocs\web\test.sublime-project

Вот phpmd а также phpcs установки:

  • "C: \ XAMPP \ HTDOCS \ Web \ поставщика \ Bin \ phpcs \ phpcbf.phar"
  • "C: \ XAMPP \ HTDOCS \ Web \ поставщика \ Bin \ phpcs \ phpcs.phar"
  • "C: \ XAMPP \ HTDOCS \ Web \ поставщика \ Bin \ phpmd \ phpmd.phar"

Редактировать:

Похоже, я делал это неправильно. Я добавил composer.json в каталог проекта со следующим содержимым:

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

После установки всего с composer install команда - я получил vendor папка создана для меня с большим количеством каталогов внутри, в том числе bin папка. Сейчас у него есть все необходимые файлы, но я все еще получаю ту же ошибку. Модули не могут быть найдены по какой-либо причине.

2 ответа

Решение

Хорошо,

Я не уверен, является ли это ошибкой или функцией, но я нашел решение проблемы.

  1. Сначала - вам нужно установить phpcs а также phpmd с использованием pear! Без этого - вы увидите предупреждения из исходного поста.

phpcs: pear установить PHP_CodeSniffer

phpmd: инструкции здесь: http://pear.phpmd.org/ (я не помню имя другого репозитория, но во время первой установки вы столкнетесь с ошибкой, что какая-то библиотека отсутствует, и вам будет предложено добавить текст еще один репозиторий, в котором отсутствуют зависимости для установки phpmd pear. Все просто)

Начните ST3 и проверить. Никаких изменений в конфигурации не требуется. Оба модуля должны работать в Sublime Text 3! Но мы сейчас используем pear модули вместо composer модули. Моей первоначальной идеей было использовать conmposer, Это намного легче поддерживать и обновлять.

В случае, если вы не знакомы с ним - Google. В каталоге проекта у вас должен быть файл с именем composer.json с содержанием, похожим на:

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

Затем перейдите и установите все модули, используя Windows command prompt с composer install команда

  1. Как указано в intiail 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 сначала загружает pearbatв PHP каталог! Но при отправке PHP файл для анализа - он использует новый batв каталоге проекта.

Мое объяснение таково, что SublimeLinter всегда нужен pear phpcs а также phpmd быть установленным перед использованием composer эквиваленты. Это довольно глупо, если вы спросите меня... но я не мог найти никакого другого решения.

У меня также были трудные времена, пытаясь заставить работать sublimeLinter-phpmd. вот как я это исправил:

Предполагает:

  • ты на окнах
  • у вас установлен sublime-text 3 и sublimeLinter

шаги:

  1. установить грушу: http://pear.php.net/manual/en/installation.getting.php
  2. важно: добавить каталог pear в $PATH
  3. установите phpmd, используя pear в вашем каталоге pear: https://github.com/SublimeLinter/SublimeLinter-phpmd
  4. перезапустите возвышенный текст 3.

Для меня это потому, что я пропустил шаг 2, так что phpmd linter не будет работать.

Нет необходимости устанавливать phpmd для каждого проекта с помощью composer. и нет необходимости вручную изменять настройку SublimeLinter после установки SublimeLinter-phpmd.

Пусть это поможет.

Другие вопросы по тегам