Как отфильтровать вывод командной строки xcodebuild? - PullRequest
38 голосов
/ 11 февраля 2010

Запуск xcodebuild с консоли принесет вам очень подробный вывод, и я не смог найти какие-либо варианты ограничения его вывода, чтобы отображать только предупреждения и ошибки.

Я ищу способ захвата вывода xcodebuild и его фильтрации. Он предпочел бы решение Python, которое будет работать с конвейерами, но я открыт для других подходов, поскольку они являются решениями на основе командной строки.

Есть ли какие-либо инструменты, которые уже могут это сделать?

Ответы [ 6 ]

54 голосов
/ 26 января 2017

Использование xcodebuild -quiet.

Согласно справочной странице xcodebuild:

-quiet: не печатать никаких выводов, кроме предупреждений и ошибок.

Бонус: другие инструменты не нужны! (Хотя мне тоже нравится xcodebuild | xcpretty)

Я строю с Travis CI, который жалуется после 4 МБ журналов. Этот аргумент решил проблему.

40 голосов
/ 20 июня 2015

Существует рубиновый камень под названием xcpretty.

Фильтрует выходные данные xcodebuild, а также предоставляет различные форматеры и цвета.

35 голосов
/ 05 марта 2012

Этого мне недостаточно. Пропуск в / dev / null просто покажет вам, что сборка не удалась, но вы не видите причины, почему. В идеале мы могли бы видеть только ошибки и / или предупреждения без всех успешных команд компилятора.

Это в основном делает работу:

xcodebuild | grep -A 5 error:
18 голосов
/ 24 февраля 2010

Чтобы видеть только выходные сообщения об ошибках, перенаправьте стандартный вывод в / dev / null (специальный файл, который работает как черная дыра) следующим образом:

xcodebuild > /dev/null

Если вы хотите записать вывод ошибки в файл, вы можете сделать:

xcodebuild 2> ./build_errors.log
5 голосов
/ 06 ноября 2017

enter image description here

-quiet - лучший способ сделать это сейчас.

0 голосов
/ 15 апреля 2016

Мне нравится xcpretty за то, что я выгляжу как человек, но мне нужно было найти ошибки сборки в автоматическом режиме для распространения в другом месте, и я хотел быть уверен, что собрал только соответствующую информацию. Для этой цели используется следующая команда sed:

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

Выход:

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