Comment réparer l'erreur de syntaxe YAML: n'a pas trouvé prévu '-' indicateur lors de l'analyse d'un bloc?
J'ai un code écrit dans mon .travis.yml
écrit pour une bibliothèque Python. À l'aide de lint.travis-ci.org, je sais qu'il y a de l'indentation problème dans mon fichier YAML. Ici est la partie sur laquelle l'erreur des points de
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
Où je me trompe? Le message d'erreur indique
syntax error: (<unknown>): did not find expected '-' indicator while parsing a block collection at line 32 column 3
Ce serait formidable s'il y avait un outil comme autopep8
de fixer l'indentation des fichiers YAML.
"Questions nous demandant de recommander ou trouver un livre, un outil, une bibliothèque de logiciels, tutoriel ou d'autres hors-site de ressources sont hors sujet pour Stack Overflow car ils ont tendance à attirer les opinions des réponses et le spam."</j'ai> Aussi "yaml linter" m'a 15k des résultats Google, donc peut-être envisager de faire un peu de recherche.
Oui, +1 pour 15k hits. Je ne parle pas de validation plutôt que la correction de mes fichier. Tous ces résultats google de fournir de validation. J'ai fait quelques recherches et ne pouvez pas trouver un outil, une bibliothèque de logiciels etc. c'est pourquoi il n'y a aucune chance pour que les opinions des réponses. Je vous remercie.
Néanmoins, cette question, comme toutes recommandation questions, est hors-sujet sur Stack Overflow. Si vous pouvez fournir un but et certains conditions (qui à votre question manque actuellement), il peut être sujet à SoftwareRecs - voir softwarerecs.stackexchange.com/help/on-topic
Merci pour l'aide.
Votre "Où suis-je tort?" la question est appropriée pour ce site. Demander à un outil de autopep8 ne l'est pas. J'ai changé la question c'est donc dans le champ d'application de la Stack Overflow
Oui, +1 pour 15k hits. Je ne parle pas de validation plutôt que la correction de mes fichier. Tous ces résultats google de fournir de validation. J'ai fait quelques recherches et ne pouvez pas trouver un outil, une bibliothèque de logiciels etc. c'est pourquoi il n'y a aucune chance pour que les opinions des réponses. Je vous remercie.
Néanmoins, cette question, comme toutes recommandation questions, est hors-sujet sur Stack Overflow. Si vous pouvez fournir un but et certains conditions (qui à votre question manque actuellement), il peut être sujet à SoftwareRecs - voir softwarerecs.stackexchange.com/help/on-topic
Merci pour l'aide.
Votre "Où suis-je tort?" la question est appropriée pour ce site. Demander à un outil de autopep8 ne l'est pas. J'ai changé la question c'est donc dans le champ d'application de la Stack Overflow
OriginalL'auteur Himanshu Mishra | 2015-06-28
Vous devez vous connecter pour publier un commentaire.
Vous n'avez pas de 32 lignes dans votre fichier (probablement parce que vous avez dépouillé non essentiels de données de l'exemple), mais le niveau de retrait de points à la ligne avec
fi
.En fait le problème commence plus tôt et ce que vous voulez faire est de spécifier l'action à entreprendre en tant que multi-ligne de chaîne. Vous pouvez spécifier ceux en YAML dans de multiples façons, mais le plus propre est d'utiliser le littéral scalaire indicateur "
|
", qui préserve les retours à la ligne:N'est pas automatique YAML re-indentation outil pour ce genre d'erreurs.
Reindenters pour Python prendre le code de travail et faire le retrait de cohérence (remplacement des Onglets, toujours le même alinéa par niveau). Le code Python re-indentation de code avec des erreurs de syntaxe, soit ne fonctionne pas ou est susceptible de produire non des résultats corrects.
Reindenters pour YAML face au même problème: que faire si l'entrée n'a pas de sens (et ce qui est clair pour vous et moi, n'est pas toujours évident pour un programme). Juste faire tout ce qui ne pas analyser le bien dans un multi-ligne scalaire n'est pas une solution générique.
En dehors de cela, la plupart des YAML des analyseurs de jeter quelques informations sur la lecture dans les fichiers, que vous ne voulez pas de se perdre en re-indentation, y compris en fin de vie des commentaires, fabriqués à la main des noms d'ancre, la cartographie de la commande de clés, etc. Tous, sans violer les exigences de la spécification.
Si vous voulez uniformément tiret votre (bon) YAML vous pouvez utiliser le
yaml
utilitaire qui fait partie de la[ruamel.yaml][2]
paquet (disclaimer: je suis l'auteur de ce forfait). Votre entrée est utilisé avecyaml round-trip .travis.yml
donnerait:Malheureusement pas beaucoup plus utile dans la recherche de l'erreur, la corriger
.travis.yml
version de courir à traversyaml round-trip .travis.yml
vous dira qu'il se stabilise sur le deuxième aller-retour (ie. sur la première, les extra espace est perdu). Etyaml round-trip .travis.yml --save
vous donne:Veuillez noter que dans ce
# TO build networkx-metis
n'est pas un YAML commentaire. C'est juste une partie de la multi-ligne de chaîne. Un commentaire sur une ligne avant la première ou la dernière serait cependant être préservée.OriginalL'auteur Anthon
L'erreur signifie que vous avez une erreur de syntaxe et de ce particulier, est difficile à suivre, comme il peut signifier plusieurs choses, mauvaise indentation, y compris le manque de guillemets doubles ou vous devez vous assurer de devis double certains caractères spéciaux.
Dans le cas où vous garder une trace de votre
.travis.yml
dans le dépôt git, à l'aide detravis
de commande vous pouvez facilement vérifier les versions précédentes et de les comparer.Par exemple:
Où
HEAD~2
est la vérification 2 s'engage derrière, afin de continuer à augmenter le nombre jusqu'à ce que ça va marcher, une fois trouvé, puis de comparer:Autrement séparer en petits morceaux, ou de garder la suppression de certaines sections jusqu'à ce qu'il fonctionne.
À l'aide de
ruby
est un moyen alternatif de la vérification de votre syntaxe YAML:de sorte que vous n'avez pas besoin de POSTER votre code à chaque fois via
travis
qui fonctionne de façon similaire à Travis WebLint.Exemple
La syntaxe suivante est incorrecte:
parce que l'observation de mauvaise indentation par:
Voici la syntaxe valide:
Le problème ci-dessus se passe surtout lors de l'édition de fichiers dans Vim, qui est en train de faire une indentation de commentaires faisant d'eux depuis le début.
OriginalL'auteur kenorb