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?
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
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.
Il existe une gemme Ruby appelée xcpretty
.
Il filtre la sortie de xcodebuild
et fournit également différents formateurs et couleurs.
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:
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.