web-dev-qa-db-fra.com

Comment filtrer la sortie de la ligne de commande xcodebuild?

Exécuter xcodebuild à partir de la console vous apportera une sortie très détaillée et je n’ai pas été en mesure de localiser les options permettant de limiter sa sortie afin d’afficher uniquement les avertissements et les erreurs.

Je cherche un moyen de capturer la sortie xcodebuild et de la filtrer. Il préférerait une solution Python qui fonctionnera avec des pipes, mais je suis ouvert à d’autres approches dans la mesure où elles sont basées sur une ligne de commande.

Y at-il des outils qui sont déjà capables de faire cela?

38
sorin

Pour ne voir que les messages de sortie d'erreur, redirigez la sortie standard vers/dev/null (un fichier spécial fonctionnant comme un trou noir), comme suit:

xcodebuild>/dev/null

Si vous voulez capturer la sortie d'erreur dans un fichier, vous pouvez faire:

xcodebuild 2> ./build_errors.log
18
Guillaume

Utilisez xcodebuild -quiet.

Selon la page de manuel de xcodebuild:

-quiet: N'imprimez aucune sortie sauf pour les avertissements et les erreurs.

Bonus: Aucun autre outil nécessaire! (Bien que j'aime aussi xcodebuild | xcpretty)

Je construis avec Travis CI, qui se plaint après 4 Mo de journaux. Cet argument a résolu le problème.

46
Amin Ariana

Il existe une gemme Ruby appelée xcpretty .

Il filtre la sortie de xcodebuild et fournit également différents formateurs et couleurs.

37
Koraktor

Ce n'est pas suffisant pour moi. Piping to/dev/null ne fera que vous montrer qu'une construction a échoué, mais vous ne voyez pas pourquoi. Idéalement, nous ne pourrions voir que les erreurs et/ou les avertissements sans toutes les commandes de compilation réussies.

Cela fait essentiellement le travail:

xcodebuild | grep -A 5 error:
35
rosejn

 enter image description here

-quiet est la meilleure façon de le faire maintenant.

5
weijia.wang

J'adore xcpretty parce que je regarde en tant qu'être humain, mais j'avais besoin de détecter les erreurs de construction dans un paramètre automatisé pour la propagation ailleurs, et je voulais m'assurer de ne capturer que les informations pertinentes. La commande sed suivante sert cet objectif:

xcodebuild | sed -nE '/error:/,/^[[:digit:]] errors? generated/ p'

Sortie:

main.c:16:5: error: use of undeclared identifier 'x'
    x = 5;
    ^
main.c:17:5: error: use of undeclared identifier 'y'
    y = 3;
    ^
2 errors generated.
0
ravron