Question

Running xcodebuild de la console vous apportera sortie très bavard et je n'étais pas en mesure de localiser toutes les options pour limiter sa production afin d'afficher uniquement les avertissements et les erreurs.

Je cherche un moyen de capturer la sortie de xcodebuild et filtrer. Il préférerait une solution Python qui fonctionne avec des tuyaux, mais je suis ouvert à d'autres approches aussi longtemps qu'ils sont des solutions à base de ligne de commande.

sont des outils qui sont déjà en mesure de le faire?

Était-ce utile?

La solution

Pour afficher uniquement les messages de sortie d'erreur, redirigez la sortie standard vers / dev / null (un fichier spécial qui fonctionne comme un trou noir) comme ceci:

xcodebuild > /dev/null

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

xcodebuild 2> ./build_errors.log

Autres conseils

Utilisez xcodebuild -quiet.

Selon la page de manuel xcodebuild:

  

quiet. Ne pas imprimer une sortie à l'exception des avertissements et des erreurs

Bonus: Pas d'autres outils nécessaires! (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.

Il y a un petit bijou appelé Ruby xcpretty .

Il filtre la sortie du xcodebuild et fournit également différents formateurs et les colorants.

Cela ne suffit pas pour moi. Tuyauteries / dev / null va simplement vous montrer que la construction a échoué, mais vous ne voyez pas la raison (s) pourquoi. Idéalement, nous pourrions voir seulement les erreurs et / ou des avertissements sans toutes les commandes réussies du compilateur.

fait essentiellement le travail:

xcodebuild | grep -A 5 error:

 ici

-quiet est la meilleure façon de le faire à présent.

Il y a un outil de ligne de commande Swift https://github.com/thii/xcbeautify qui peut formater également la sortie xcodebuild.

J'aime xcpretty pour regarder comme un être humain, mais j'avais besoin de trouver des erreurs de compilation dans un cadre automatisé pour la propagation ailleurs, et je voulais être sûr que je saisis simplement les informations pertinentes. La commande sed suivante sert à cette fin:

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.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top