2010-02-11 9 views
36

Das Ausführen von xcodebuild von der Konsole wird Ihnen sehr ausführliche Ausgabe bringen und ich konnte keine Optionen für die Begrenzung seiner Ausgabe finden, um nur Warnungen und Fehler anzuzeigen.Wie filtert man die xcodebuild Kommandozeilenausgabe?

Ich bin auf der Suche nach einer Möglichkeit, die xcodebuild Ausgabe zu erfassen und zu filtern. Es würde eine Python-Lösung bevorzugen, die mit Pipes arbeitet, aber ich bin offen für andere Ansätze, solange sie Befehlszeilen-basierte Lösungen sind.

Sind irgendwelche Werkzeuge, die das schon können?

Antwort

17

nur um die Fehlerausgabenachrichten zu sehen, die Standardausgabe auf/dev/null (eine spezielle Datei, die als ein schwarzes Loch funktioniert) umleiten wie folgt aus:

xcodebuild > /dev/null

Wenn Sie die Fehlerausgabe erfassen möchten in eine Datei können Sie tun:

xcodebuild 2> ./build_errors.log
35

Dies ist nicht ausreichend für mich. Piping nach/dev/null zeigt Ihnen nur, dass ein Build fehlgeschlagen ist, aber Sie sehen nicht den Grund warum. Idealerweise konnten wir nur die Fehler und/oder Warnungen ohne alle erfolgreichen Compilerbefehle sehen.

Diese im Grunde macht den Job:

xcodebuild | grep -A 5 error: 
+19

oder 'xcodebuild | egrep -A 5 "(Fehler | Warnung):" ' – v01pe

+10

oder' egrep '^ (/.+: [0-9 +: [0-9] + :. (Fehler | Warnung): | fatal | ===) '-' um auch Zeilen zu erhalten, die sagen, was xcodebuild gerade macht. – PatchyFog

33

Es gibt ein Ruby Juwel xcpretty genannt.

Es filtert die Ausgabe von xcodebuild und bietet auch verschiedene Formatierer und Färbung.

+2

bitte stimmen Sie diese Antwort ab, dieses Tool ist genial und löst das Problem viel besser als grep – hariseldon78

+1

Dieses Tool ist fantastisch!Warum habe ich es vorher nicht entdeckt ?! –

+0

xcpretty ist ein nützliches Tool, das in Verbindung mit xcodebuild verwendet werden kann. – AhiyaHiya

0

Ich liebe xcpretty für das Betrachten als ein Mensch, aber ich hatte Build-Fehler in einer automatisierten Einstellung für die Verbreitung anderswo zu finden, und ich wollte sicher sein, dass ich nur die relevanten Informationen erfasst. Die folgende sed-Befehl dient diesem Zweck:

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

Ausgang:

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. 
24

Verwendung xcodebuild -quiet.

Nach der xcodebuild Manpage:

-quiet: Drucken Sie keine Ausgabe mit Ausnahme von Warnungen und Fehler.

Bonus: Keine weiteren Werkzeuge notwendig! (Ich mag auch xcodebuild | xcpretty)

Ich baue mit Travis CI, die nach 4 MB Protokolle klagt. Dieses Argument löste das Problem.

+1

Dies sollte als richtige Antwort markiert werden. Vielen Dank! – Ruenzuo

+0

Funktioniert leider nur für Xcode 8+. Zu früheren Xcodes siehe Antwort von @rosejn. – kambala

1

enter image description here

-quiet ist der beste Weg, es jetzt zu tun.