PHPStorm 2017.1 не запускается удаленный phpcs: «ОШИБКА: файл ~ / .phpstorm_helpers / ... не существует»

838
LSerni

ОБНОВЛЕНИЕ ВОПРОСА : Я по ошибке использовал номер редакции для PHPStorm. Правильная версия - 2017.1, а не 2017.3, как было заявлено изначально .

Я недавно обновился до последней версии PHPStorm (2017.1 марта), и PHPcs больше не работает, выдавая ошибку. Это версия PHPStorm:

PhpStorm 2017.1 Build #PS-171.3780.104, built on March 21, 2017 JRE: 1.8.0_112-release-736-b13 amd64 JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o Windows 7 6.1 

Я помню, что была похожая ошибка в 2017 году.1 января, которая была исправлена ​​в феврале.

Я уже проверил конфигурацию, и она в порядке, и она проверяется правильно; очевидно, удаленный Code Sniffer (версия 2.7.0 на современной Ubuntu 16.04-LTS) либо работает неправильно, либо вызывается с неправильными параметрами (выглядит более вероятным).

Ошибка:

PHP Code Sniffer phpcs: ERROR: The file "/home/lserni/.phpstorm_helpers/phpcs_temp.tmp/PHP" does not exist.  Usage: phpcs [-nwlsaepqvi] [-d key[=value]] [--colors] [--no-colors] [--stdin-path=<stdinPath>] [--report=<report>] [--report-file=<reportFile>] [--report-<report>=<reportFile>] ... [--report-width=<reportWidth>] [--generator=<generator>] [--tab-width=<tabWidth>] [--severity=<severity>] [--error-severity=<severity>] [--warning-severity=<severity>] [--runtime-set key value] [--config-set key value] [--config-delete key] [--config-show] [--standard=<standard>] [--sniffs=<sniffs>] [--exclude=<sniffs>] [--encoding=<encoding>] [--extensions=<extensions>] [--ignore=<patterns>] [--bootstrap=<bootstrap>] [--file-list=<fileList>] <file> ... Set 

Понижение версии до февраля, как и ожидалось, решает проблему (до обновления этого не происходило). Я хотел обновить, потому что я ожидаю, что это исправит досадную ошибку, которую я не хочу обойти .

До того, как я отправлю сообщение об ошибке - что меня не устраивает, так как моя конфигурация не из коробки - кто-нибудь знает, в чем проблема, или кто-то хочет догадаться? Конфигурация PHPStorm была правильной для предыдущей ревизии, но вполне может быть, что предыдущая позволила мне избежать некоторой глупости, с которой я столкнулся, которая теперь кусает меня с текущей ревизией.

0
Вы не указали ошибку. Вы должны перейти на 2017.2 и посмотреть, решена ли проблема. Ramhound 7 лет назад 1
Сожалею. Обновленный ответ. Как видите, это стандартное сообщение об ошибке синтаксиса. Мне интересно, использует ли phpcs-файл файл * с пробелами в имени *, и они забыли кавычки. За исключением того, что я не использую ни один файл с пробелами в имени, и ни один из них не называется «PHP-что-то». На самом деле на моем компьютере нет файлов "PHP-что-то", за исключением "PHP Object Dumps.xml", который также присутствовал в 2017.2. LSerni 7 лет назад 0
Мы всегда рады помочь, но, пожалуйста, не ставьте «Решено» в заголовке вашего вопроса. В нашем сообществе тот факт, что вы определили ответ в качестве официального решения, уже показывает нам, что проблема была решена. Спасибо за вашу помощь! Run5k 7 лет назад 1

1 ответ на вопрос

1
LSerni

Итак, PHPStorm выполняет код удаленно на моей машине. Я могу отладить это.

Оказывается, что для анализа файла PHPStorm загружает файл через SFTP на мой компьютер, как и ожидалось. Затем он вызывает phpcs из SSH, также, как и ожидалось.

То, что не ожидал, что я вижу два заклинаниям (вернее, я бы увидеть два, если первый не разбился, см . Ниже) Первая попытка запуска кода Sniffer против файл под названием «PHP Console», что делает существование и будет закачанный на моей машине, за исключением того, что нулевые байты в длину (и, следовательно, не может базовую проверку PHPCS, он даже не имеет короткие теги) ,

Затем PHPStorm вызывает phpcs без кавычек, поэтому просит

...phpcs PHP Console --format=XML etc. 

и, конечно, phpcs пытается открыть файл с именем «PHP», и терпит неудачу. Поэтому он отображает ошибку и останавливается, никогда не перехватывая реальный файл, который я хочу перехватить.

разрешение

Я подготовил другой бинарный файл, который вызывает phpcs и назвал его /usr/local/bin/phpcs-phpstorm:

#!/bin/sh  if [ "PHP" = "$1" ]; then # Output a PHPCS message saying "This file is OK, go on." cat <<-HERE <?xml version="1.0" encoding="UTF-8"?> <phpcs version="2.7.0"></phpcs> HERE exit 0 fi  # Launch the true phpcs. And since we're here, use also my own standard. # (I need to find out how to update PHPCS smell sets in PHPStorm)  /usr/bin/phpcs --standard=/home/lserni/phpstorm-phpcs-ruleset.xml $* 

Затем я сказал PHPStorm, что мой удаленный PHPCS был вызван /usr/local/bin/phpcs-phpstorm.

Таким образом, запускаются два экземпляра phpcs - первый сообщает об ошибке и немедленно завершает работу, а в этот момент запускается второй phpcs для реального файла PHP, скопированного на машине. Время, затраченное на первый запуск, незначительно, так как реальный phpcs даже не загружен.

Не элегантно, но все, что работает.