ОБНОВЛЕНИЕ ВОПРОСА: Я по ошибке использовал номер редакции для 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 была правильной для предыдущей ревизии, но вполне может быть, что предыдущая позволила мне избежать некоторой глупости, с которой я столкнулся, которая теперь кусает меня с текущей ревизией.

1 ответ1

1

Итак, 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 даже не загружен.

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .