PHPStorm 2017.1 schlägt fehl, um entfernte phpcs auszuführen: “FEHLER: Die Datei ~ / .phpstorm_helpers /… existiert nicht”

0

UPDATE DER FRAGE : Ich habe versehentlich die Versionsnummer für PHPStorm verwendet. Die korrekte Version ist 2017.1, nicht 2017.3, wie ursprünglich angegeben .

Ich habe kürzlich ein Update auf das neueste PHPStorm (2017.1 März) durchgeführt und PHPcs funktioniert nicht mehr. Stattdessen wird ein Fehler ausgegeben. Dies ist die PHPStorm-Version:

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

Ich erinnere mich, dass es im Januar 2017 einen ähnlichen Fehler gab, der dann im Februar behoben worden war.

Ich habe die Konfiguration bereits überprüft und sie ist in Ordnung und wird korrekt validiert. Anscheinend läuft der Remote-Code-Sniffer (Version 2.7.0 auf dem aktuellen Ubuntu 16.04-LTS) entweder nicht richtig oder wird mit den falschen Parametern aufgerufen (sieht wahrscheinlicher aus).

Der Fehler ist:

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

Ein erwartungsgemäßes Downgrade auf die Februar-Version behebt das Problem (dies war vor dem Upgrade nicht der Fall). Ich wollte aktualisieren, weil ich davon ausgehe, dass dies einen nervigen Fehler behebt , den ich nicht umgehen möchte .

Bevor ich einen Fehler einreiche - mit dem ich nicht allzu vertraut bin, da meine Konfiguration nicht sofort einsatzbereit ist - weiß jemand, woran es liegt, oder weiß jemand, woran es liegt? Die PHPStorm-Konfiguration war für die vorherige Version korrekt , aber es kann durchaus vorkommen, dass die vorherige Version mich mit etwas Dummheit davonkommen lässt, die ich mir ausgedacht habe , und mich jetzt mit der aktuellen Version beißt.

LSerni
quelle
1
Sie haben den Fehler nicht angegeben. Sie sollten ein Downgrade auf 2017.2 durchführen und prüfen, ob das Problem behoben ist.
Ramhound
Es tut uns leid. Aktualisierte Antwort. Wie Sie sehen, handelt es sich hierbei um eine Standardmeldung "Syntaxfehler". Ich frage mich, ob der Aufruf von phpcs eine Datei mit Leerzeichen im Namen verwendet und sie die Anführungszeichen vergessen haben. Außer, dass ich keine Datei mit Leerzeichen im Namen verwende und keine mit dem Namen "PHP something". Tatsächlich befinden sich auf meinem PC keine "PHP something" -Dateien außer einer "PHP Object Dumps.xml", die auch in 2017.2 vorhanden war.
LSerni
1
Wir sind immer gerne für Sie da, aber tragen Sie bitte nicht "Gelöst" in den Titel Ihrer Frage ein. In unserer Community zeigt uns die Tatsache, dass Sie eine Antwort als offizielle Lösung festgelegt haben, bereits, dass das Problem gelöst wurde. Danke für Ihre Hilfe!
Run5k

Antworten:

1

OK, PHPStorm führt Code auf meinem Computer aus der Ferne aus. Ich kann das debuggen.

Es stellt sich heraus, dass PHPStorm zur Analyse einer Datei die Datei erwartungsgemäß über SFTP auf meinen Computer hochlädt. Dann ruft es phpcs von SSH auf, ebenfalls wie erwartet.

Was nicht erwartet wird, ist, dass ich zwei Aufrufe sehe (eher würde ich zwei sehen, wenn der erste nicht abstürzt, siehe unten). Die erste versucht - Code Sniffer gegen eine Datei mit dem Namen „PHP Console“ zu laufen, das tut existiert und wird auf meinem Rechner hochgeladen, es sei denn es Null - Bytes in der Länge (und nicht deshalb grundlegende PHPCS Validierung, es nicht einmal kurz - Tags) .

Dann ruft PHPStorm phpcs ohne Anführungszeichen auf, fragt also nach

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

und natürlich versucht phpcs, eine Datei mit dem Namen "PHP" zu öffnen, und schlägt fehl. Aus diesem Grund wird ein Fehler angezeigt und der Vorgang wird abgebrochen, und es wird nie mehr an der eigentlichen Datei gesniffen, die gesnifft werden soll.

Auflösung

Ich habe eine andere Binärdatei vorbereitet, die phpcs aufruft und es nennt /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 $*

Dann teilte ich PHPStorm mit, dass meine Remote-PHPCS aufgerufen wurde /usr/local/bin/phpcs-phpstorm.

Auf diese Weise werden zwei phpcs-Instanzen gestartet - die erste meldet keinen Fehler und wird sofort beendet, und an diesem Punkt wird die zweite phpcs gegen die auf die Maschine kopierte echte PHP-Datei gestartet. Die Zeit, die der erste Lauf benötigt, ist vernachlässigbar, da die realen PhPCs noch nicht einmal geladen sind.

Nicht elegant, aber was auch immer funktioniert.

LSerni
quelle