Итак, 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 даже не загружен.
Не элегантно, но все, что работает.