6
votes

Arrêtez de faire si la recherche -exec retourne pas zéro

J'essaie d'intégrer la vérification de mon code à l'aide de pyflakes dans un processus de construction. J'ai défini la cible suivante dans mon makefile : xxx

Le problème est que recherche retourne 0 Chaque fois que même s'il y a des problèmes de code ( pyflakes renvoie non 0 ) et faire réussit. Idéalement, je veux exécuter le chèque sur chaque fichier source et arrêter faire si au moins l'un des -exec a échoué. Y a-t-il un moyen d'y parvenir?


0 commentaires

3 Réponses :


5
votes

Je suppose qu'il n'y a aucun moyen de faire trouver le code de sortie de -exec .
Ce qui devrait fonctionner est une tuyauterie sur xargs : xxx


0 commentaires

3
votes

Vous pouvez simplement pipeler la sortie de la recherche de votre propre boucle de traitement et sortir lorsque Pyflakes renvoie un statut de sortie autre que 0.

find . -iname '*.jpg' | \
while read line ; do
    pyflakes "$line"
    res=$?
    if [ $res -ne 0 ] ; then
        exit $res
    fi
done


4 commentaires

cmd; Si [$? -ne 0]; alors foo; fi est juste un anticipateur; la bonne façon de coder c'est si cmd; alors foo; fi ou simplement cmd || foo .


Je ne vois aucune amélioration. Le code que vous voulez est pyflakes "$ line" || Quittez $ $? , court et simple.


Je ne vois aucun avantage à votre chemin. Le point est que c'est plus court?


L'essentiel est que c'est unidiomatic d'examiner explicitement $? dans la plupart des cas; La fonction de si est d'exécuter une commande et de vérifier si son code de sortie est zéro ou non.



1
votes

Mettez-le mettre fin au processus de recherche par xxx

C'est ce qui se passe dans le makefile, ce n'est pas un fichier de script, si vous vous demandez sur la syntaxe.


1 commentaires

Il suffit d'écrire -exec bash -c 'pyflakes {} || tuer $ ppid '\; . Pour moi, cela fonctionne un peu plus lentement que le prédicat -Quit , testé avec: Rechercher -Name '* .cpp' \ (-print -a -exec g ++ -c {} \; o -quit \) .