Wie kann man die YAML-syntax-Fehler: nicht gefunden erwartet ' - " - Anzeige während der Analyse einen block?
Ich habe einige code geschrieben in meinem .travis.yml
geschrieben für Python-Bibliothek. Mit lint.travis-ci.org, kam ich zu wissen, dass es einige Einrückung problem in meinem YAML-Datei. Hier ist der Teil, der den Fehler Punkte zu
install:
- if [[ "${TEST_PY3}" == "false" ]]; then
pip install Cython;
python setup.py build; # To build networkx-metis
mkdir core; # For the installation of networkx core
cd core;
git clone https://github.com/orkohunter/networkx.git;
cd networkx/;
git checkout addons;
python setup.py install;
cd ..;
fi
Wo bin ich falsch? Der Fehler sagt
syntax error: (<unknown>): did not find expected '-' indicator while parsing a block collection at line 32 column 3
Wäre es schön, wenn es ein tool wie autopep8
zu beheben, wird der Einzug des YAML-Dateien.
- "Fragen, ob wir empfehlen, oder finden Sie ein Buch, tool, software library, tutorial oder andere off-site-resource off-topic für Stack-Überlauf, da Sie dazu neigen zu locken, rechthaberisch Antworten und spam." Auch "yaml linter" hat mich 15k Google trifft, also vielleicht erwägen Sie, einige der Forschung.
- Ja, +1 für 15k trifft. Ich spreche nicht über die Validierung eher Korrektur meiner Datei. Alle diejenigen, die google trifft Validierung. Ich habe einige der Forschung getan und finde keine tool, software, Bibliothek etc. das ist, warum gibt es keine chance für eigenwillige Antworten. Danke.
- Dennoch, diese Frage, wie alle Empfehlung Fragen, ist off-topic auf Stack Overflow. Wenn Sie einen Zweck und einige Objektive Anforderungen (die deine Frage derzeit fehlt), kann es Thema sein bei SoftwareRecs - siehe softwarerecs.stackexchange.com/help/on-topic
- Vielen Dank für die Hilfe.
- Ihr "Wo bin ich falsch?" die Frage ist angemessen für diese Website. Fragen Sie nach einem Werkzeug, wie autopep8 nicht. Ich habe die Frage so ist es im Rahmen der Stack-Overflow
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sie nicht über 32 Zeilen in Ihrer Datei (wahrscheinlich, weil Sie die Befestigungsschrauben nicht-essentielle Daten aus dem Beispiel), aber die Einrückung Punkte zu der Linie mit
fi
.Eigentlich das problem beginnt früher, und was Sie tun möchten, ist geben Sie die Aktion als multi-line string. Sie können angeben, diese in YAML in mehrere Möglichkeiten, aber der sauberste, ist die Verwendung der wörtliche Skalare Indikator "
|
", die bewahrt Zeilenumbrüche:Gibt es keine automatische YAML re-Einzug-tool für diese Art von Fehler.
Reindenters für Python nehmen, funktionierenden code und machen die Einrückungen konsistent (das ersetzen von TABs, immer die gleiche Einrückung pro Ebene). Python-code re-Einrückung von code mit syntax-Fehler, die entweder nicht arbeiten oder produzieren könnten, die nicht die richtigen Ergebnisse.
Reindenters für YAML Gesicht das gleiche problem: was tun, wenn die Eingabe keinen Sinn ergibt (und was ist dir klar und mir ist nicht immer eindeutig zu einem Programm). Nur die alles analysieren nicht gut in eine multi-line-Skalar ist nicht eine generische Lösung.
Abgesehen von, dass, meisten YAML-Parser wegwerfen einige Informationen über das Lesen in den Akten, dass Sie würde nicht wollen, get lost von re-Formatierung, einschließlich EOL Kommentare, handgefertigte Anker-Namen-mapping key bestellen, etc. Alle, ohne gegen die Anforderungen in der Spezifikation.
Wenn Sie wollen einheitlich einzurücken (richtigen) YAML können Sie die
yaml
- Dienstprogramm, das Teil der[ruamel.yaml][2]
Paket (disclaimer: ich bin der Autor des Pakets). Ihre ursprüngliche Eingabe verwendet, mityaml round-trip .travis.yml
geben würde:Leider nicht viel mehr hilfreich bei der Suche nach den Fehler, die richtige
.travis.yml
version laufen durchyaml round-trip .travis.yml
wird Ihnen sagen, dass es stabilisiert auf der zweiten Runde-Reise (dh. auf den ersten die extra Leerzeichen verloren gegangen ist). Undyaml round-trip .travis.yml --save
gibt Sie:Bitte beachten Sie, dass in diesem
# TO build networkx-metis
ist nicht eine YAML-Kommentar. Es ist nur ein Teil der multi-line string. Ein Kommentar auf einer Zeile vor der ersten oder nach der letzten, würde jedoch beibehalten werden.Der Fehler bedeutet, dass Sie haben syntax-Fehler, und dies ist insbesondere schwierig, zu verfolgen, wie es könnte bedeuten, dass mehrere Dinge falsch Einzug, einschließlich fehlende Anführungszeichen oder Sie müssen sicherstellen, um doppelte Anführungszeichen einige Sonderzeichen.
In Fall, dass Sie verfolgen Ihre
.travis.yml
im git-repository, mittravis
Befehl können Sie leicht überprüfen Sie die vorherigen Versionen, und vergleichen Sie.Beispiel:
Wo
HEAD~2
ist-Prüfung 2 hinter begeht, so halten die Erhöhung der Zahl, bis es dann klappt, ist Sie einmal gefunden, dann vergleichen wie:Sonst trennen, in kleinere Stücke oder halten Sie das entfernen einiger Abschnitte, bis es funktioniert.
Mit
ruby
ist die alternative Möglichkeit, zu überprüfen, Ihre YAML-syntax:so brauchen Sie nicht, VERÖFFENTLICHEN Sie Ihren code jedes mal über
travis
die funktioniert in ähnlicher Weise wie Travis, Indem Sie Weblint.Beispiel
Folgende syntax ist falsch:
weil Ihr Kommentar falsch Einzug als pro:
Hier gültig ist syntax:
Das oben genannte Problem besonders dann zu, wenn die Bearbeitung der Dateien in Vim, die dabei Einrückung der Kommentare macht Sie von Anfang an.