如何过滤xcodebuild命令行输出?

问题描述:

从控制台运行xcodebuild会为您带来非常详细的输出,并且我无法找到限制其输出的任何选项,以便仅显示警告和错误。如何过滤xcodebuild命令行输出?

我正在寻找一种方法来捕获xcodebuild输出并对其进行过滤。它倾向于一种可以与管道一起工作的Python解决方案,但只要是基于命令行的解决方案,我就可以接受其他方法。

是否有任何工具已经能够做到这一点?

要看到的只是错误输出信息,重定向标准输出到/ dev/null的(一个特殊的文件,它作为一个黑洞)是这样的:如果你想捕捉的错误输出

xcodebuild > /dev/null

到一个文件,你可以这样做:

xcodebuild 2> ./build_errors.log

这对我来说是不够的。管道到/ dev/null只会告诉你一个构建失败,但你没有看到原因。理想情况下,我们只能看到错误和/或警告,而没有所有成功的编译器命令。

这基本上做这项工作:

xcodebuild | grep -A 5 error: 
+19

或'xcodebuild | egrep -A 5“(error | warning):”' – v01pe 2013-10-17 09:50:18

+10

或'egrep'^(/.+:[0-9 +:[0-9] + :.(error | warning):| fatal | === )'-'也可以获得行说明xcodebuild将要做什么。 – PatchyFog 2015-04-30 22:39:21

有一个红宝石的宝石称为xcpretty

它过滤了xcodebuild的输出,并且还提供了不同的格式化程序和着色。

+2

请投票了这个答案,这个工具是真棒,解决问题比grep好得多 – hariseldon78 2015-08-12 14:44:48

+1

这个工具太棒了!为什么我以前没有发现它? – 2015-09-30 13:52:33

+0

xcpretty是一个与xcodebuild结合使用的有用工具。 – AhiyaHiya 2016-11-17 14:40:01

我喜欢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. 

使用xcodebuild -quiet

按照xcodebuild联编手册页:

-quiet:不显示任何输出,除了警告和错误。

奖励:无需其他工具! (虽然我也喜欢xcodebuild | xcpretty

我用Travis CI构建,它在4 MB日志后投诉。这个论点解决了这个问题。

+1

这应该被标记为正确的答案。谢谢! – Ruenzuo 2017-03-13 15:50:14

+0

不幸的是,只适用于Xcode 8+。对于以前的Xcode,请参阅@rosejn的答案。 – kambala 2017-04-25 09:44:34

enter image description here

-quiet是现在做的最好的方式。