Как отфильтровать вывод командной строки xcodebuild?
Запуск xcodebuild
с консоли приведет к очень подробному выводу, и я не смог найти какие-либо опции для ограничения его вывода, чтобы отображать только предупреждения и ошибки.
Я ищу способ захватить вывод xcodebuild
и отфильтровать его. Он предпочел бы, чтобы решение Python работало с каналами, но я открыт для других подходов, поскольку они являются решениями на основе командной строки.
Есть ли какие-либо инструменты, которые уже могут это сделать?
Ответы
Ответ 1
Чтобы видеть только сообщения об ошибках, переадресуйте стандартный вывод в /dev/null (специальный файл, который работает как черная дыра) следующим образом:
xcodebuild > /dev/null
Если вы хотите записать вывод ошибки в файл, вы можете сделать:
xcodebuild 2> ./build_errors.log
Ответ 2
Используйте xcodebuild -quiet
.
В соответствии с man-страницей xcodebuild:
-quiet: не печатайте какой-либо вывод, кроме предупреждений и ошибок.
Бонус: Никаких других инструментов не требуется! (Хотя мне также нравится xcodebuild | xcpretty
)
Я строю с Travis CI, который жалуется после 4 МБ журналов. Этот аргумент решил проблему.
Ответ 3
Theres Ruby gem называется xcpretty
.
Он фильтрует вывод xcodebuild
, а также предоставляет различные форматы и раскраски.
Ответ 4
Этого недостаточно для меня. Piping to/dev/null просто покажет вам, что сборка завершилась неудачно, но вы не видите причину (причины) почему. В идеале мы могли видеть только ошибки и/или предупреждения без всех успешных команд компилятора.
В основном это выполняет задание:
xcodebuild | grep -A 5 error:
Ответ 5
![enter image description here]()
-quiet
- лучший способ сделать это сейчас.
Ответ 6
Я люблю 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.
Ответ 7
Существует инструмент командной строки Swift https://github.com/thii/xcbeautify, который также может форматировать вывод xcodebuild.