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 ответа
Хорошо,
Я не уверен, является ли это ошибкой или функцией, но я нашел решение проблемы.
- Сначала - вам нужно установить
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
команда
Как указано в 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
сначала загружает pear
bat
в PHP
каталог! Но при отправке PHP
файл для анализа - он использует новый bat
в каталоге проекта.
Мое объяснение таково, что SublimeLinter
всегда нужен pear
phpcs
а также phpmd
быть установленным перед использованием composer
эквиваленты. Это довольно глупо, если вы спросите меня... но я не мог найти никакого другого решения.
У меня также были трудные времена, пытаясь заставить работать sublimeLinter-phpmd. вот как я это исправил:
Предполагает:
- ты на окнах
- у вас установлен sublime-text 3 и sublimeLinter
шаги:
- установить грушу: http://pear.php.net/manual/en/installation.getting.php
- важно: добавить каталог pear в $PATH
- установите phpmd, используя pear в вашем каталоге pear: https://github.com/SublimeLinter/SublimeLinter-phpmd
- перезапустите возвышенный текст 3.
Для меня это потому, что я пропустил шаг 2, так что phpmd linter не будет работать.
Нет необходимости устанавливать phpmd для каждого проекта с помощью composer. и нет необходимости вручную изменять настройку SublimeLinter после установки SublimeLinter-phpmd.
Пусть это поможет.