PHPStorm 2017.1 schlägt fehl, entfernte phpcs auszuführen: "FEHLER: Die Datei ~ / .phpstorm_helpers / ... ist nicht vorhanden"

854
LSerni

FRAGE-UPDATE : Ich habe versehentlich die Revisionsnummer für PHPStorm verwendet. Die korrekte Version ist 2017.1, nicht 2017.3 .

Ich habe kürzlich das neueste PHPStorm (2017.1. März) aktualisiert und PHPcs funktioniert nicht mehr, sondern gibt einen Fehler aus. 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 wurde.

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

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 

Durch ein Downgrade auf die Februar-Version wird das Problem wie erwartet gelöst (dies war vor dem Upgrade nicht der Fall). Ich wollte ein Update, weil ich damit rechne, einen ärgerlichen Fehler zu beheben , mit dem ich nicht umgehen möchte .

Bevor ich einen Fehler einreiche - was mir nicht allzu vertraut ist, da meine Konfiguration nicht sofort einsatzbereit ist -, weiß jemand, was das Problem ist, oder möchte jemand raten? Die Konfiguration von PHPStorm war für die vorherige Revision korrekt, aber es könnte gut der Fall sein, dass die vorige mich mit einer Dummheit davonkommen ließ, die ich mir vorgestellt hatte und die mich jetzt mit der aktuellen Revision beißt.

0
Sie haben den Fehler nicht angegeben. Sie sollten auf 2017.2 herunterstufen und sehen, ob das Problem gelöst ist. Ramhound vor 7 Jahren 1
Es tut uns leid. Antwort aktualisiert Wie Sie sehen, ist dies eine Standardnachricht "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 "PHP etwas" nannte. Tatsächlich gibt es in meinem PC keine "PHP Etwas" -Dateien außer einem "PHP Object Dumps.xml", das auch in 2017.2 vorhanden war. LSerni vor 7 Jahren 0
Wir sind immer froh, Ihnen helfen zu können, aber setzen Sie bitte nicht "Gelöst" in den Titel Ihrer Frage. Die Tatsache, dass Sie in unserer Community eine Antwort als offizielle Lösung festgelegt haben, zeigt uns bereits, dass das Problem gelöst wurde. Danke für Ihre Hilfe! Run5k vor 7 Jahren 1

1 Antwort auf die Frage

1
LSerni

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

Es stellt sich heraus, dass PHPStorm die Datei wie erwartet über SFTP auf meinen Computer lädt, um eine Datei zu analysieren. Dann ruft es, wie erwartet, phpcs von SSH auf.

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 namens "PHP" zu öffnen und schlägt fehl. Daher zeigt es einen Fehler an und stoppt. Nie wird die echte Datei, an der ich schnüffeln möchte, entdeckt.

Auflösung

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

Ich sagte dann PHPStorm, dass mein Remote PHPCS angerufen wurde /usr/local/bin/phpcs-phpstorm.

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

Nicht elegant, aber was auch immer funktioniert.