Wie filtert ich die Befehlszeilenausgabe von XcodeBuild?
-
20-09-2019 - |
Frage
Betrieb xcodebuild
Aus der Konsole bringt Sie eine sehr ausführliche Ausgabe und ich konnte keine Optionen für die Beschränkung der Ausgabe finden, um nur Warnungen und Fehler anzuzeigen.
Ich suche nach einer Möglichkeit, die zu erfassen xcodebuild
Ausgabe und filtern Sie es. Es würde eine Python -Lösung bevorzugen, die mit Rohren funktioniert, aber ich bin offen für andere Ansätze, so lange sie mit Befehlszeilen basierende Lösungen sind.
Können Tools dies bereits tun?
Lösung
Um nur die Fehlerausgabenmeldungen anzuzeigen, leiten Sie die Standardausgabe in /dev /null (eine spezielle Datei, die als Schwarzes Loch funktioniert) wie folgt um:
xcodebuild > /dev/null
Wenn Sie die Fehlerausgabe in eine Datei erfassen möchten, können Sie:
xcodebuild 2> ./build_errors.log
Andere Tipps
Verwenden xcodebuild -quiet
.
Gemäß der Seite XcodeBuild Man:
-quiet: Drucken Sie keine Ausgabe außer Warnungen und Fehlern aus.
Bonus: Keine anderen Tools notwendig! (Obwohl ich auch mag xcodebuild | xcpretty
)
Ich baue mit Travis CI, das sich nach 4 MB Protokollen beschwert. Dieses Argument löste das Problem.
Es wird ein Rubinjuwel genannt xcpretty
.
Es filtert die Ausgabe von xcodebuild
und bietet auch unterschiedliche Formatierungen und Färben.
Das reicht für mich nicht aus. Wenn Sie zu /dev /null verleihen, zeigt Ihnen nur, dass ein Build fehlgeschlagen ist, aber Sie sehen die Grund (en) nicht warum. Idealerweise konnten wir nur die Fehler und/oder Warnungen ohne alle erfolgreichen Compiler -Befehle sehen.
Dies macht im Grunde den Job:
xcodebuild | grep -A 5 error:
Es gibt ein Swift -Befehlszeilenwerkzeug https://github.com/thii/xcbeautify Das kann auch die XcodeBuild -Ausgabe formatieren.
ich liebe xcpretty
Um als Mensch zu betrachten, musste ich jedoch die Aufbaufehler in einer automatisierten Umgebung für die Ausbreitung an anderer Stelle finden, und ich wollte sicher sein, dass ich nur die relevanten Informationen erfasst habe. Der folgende SED -Befehl dient diesem Zweck:
xcodebuild | sed -nE '/error:/,/^[[:digit:]] errors? generated/ p'
Ausgabe:
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.