58

从控制台运行xcodebuild会给你带来非常详细的输出,我无法找到任何限制其输出的选项,以便只显示警告和错误。

我正在寻找一种捕获xcodebuild输出并对其进行过滤的方法。它更喜欢可以与管道一起使用的 Python 解决方案,但我对其他方法持开放态度,只要它们是基于命令行的解决方案。

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

4

11 回答 11

101

使用xcodebuild -quiet.

根据 xcodebuild 手册页:

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

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

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

于 2017-01-26T19:32:29.580 回答
50

有一个 Ruby gem 叫做xcpretty.

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

更新:正如 Mike Hardy 在对此答案的评论中正确指出的那样,xcpretty不再维护。

于 2015-06-20T09:06:49.570 回答
36

这对我来说还不够。连接到 /dev/null 只会显示构建失败,但您看不到原因。理想情况下,我们可以只看到错误和/或警告,而没有所有成功的编译器命令。

这基本上完成了这项工作:

xcodebuild | grep -A 5 error:
于 2012-03-05T11:52:17.327 回答
24

要仅查看错误输出消息,请将标准输出重定向到 /dev/null(一个用作黑洞的特殊文件),如下所示:

xcodebuild > /dev/null

如果要将错误输出捕获到文件中,可以执行以下操作:

xcodebuild 2> ./build_errors.log
于 2010-02-24T16:26:10.823 回答
12

在此处输入图像描述

-quiet是目前最好的方法。

于 2017-11-06T03:09:26.520 回答
4

有一个 Swift 命令行工具https://github.com/thii/xcbeautify也可以格式化 xcodebuild 输出。

于 2019-07-19T12:36:02.373 回答
2

我喜欢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.
于 2016-04-14T21:40:45.360 回答
0

我正在构建一个博览会项目,并且有很多来自我不想看到的库的警告。我能够使用此命令过滤掉警告。

set -o pipefail \
&& xcodebuild build -workspace app.xcworkspace -scheme app \
CODE_SIGN_IDENTITY="" \
CODE_SIGNING_REQUIRED=NO \
CODE_SIGNING_ALLOWED=NO \
| xcpretty \
| grep --line-buffered -v -F "[-W" \
| grep --line-buffered -v -F "*" \
| grep --line-buffered -v -F "^" \
| grep --line-buffered -v -F ";" \
| grep --line-buffered -v -e "^$" \
| grep --line-buffered -v -F "@" \
| grep --line-buffered -v -F ")" \
| grep --line-buffered -v -F "/" \
| grep --line-buffered -v -F "}" \
| grep --line-buffered -v -F "{" \
| grep --line-buffered -v -F "\\" \
| grep --line-buffered -v -F "#" \
| grep --line-buffered -v -F ","

我承认这有点草率,但我无法让任何其他解决方案发挥作用。该-quiet选项仍然打印了数百个我无法解决的警告。

奇怪的是,当我在构建机器上的命令行上编译时,我没有收到警告,但是当我在 CI 构建中编译时,我会收到警告。很烦人。我希望苹果能提供一种方法来消除 xcodebuild 的警告

于 2020-12-08T15:09:34.047 回答
0

我一直被xcprettyCI 环境中的太多信息所困扰,这使得调试错误变得非常困难。-quiet以一种过于激进的方式隐藏输出,所以我把这个单线放在一起并称之为xcquiet.sh. 它只隐藏特定的行,同时保留足够的原始输出并且不会吞下任何其他意外的日志条目。

于 2021-04-01T17:14:52.127 回答
0

如果你想删除警告使用

xcodebuild <command> | sed -e '/warning:/,/\^/d'

如果你想在使用时抑制警告,xcpretty试试这个

xcodebuild <command> \
    | sed -e '/warning:/,/\^/d' \
    | xcpretty -s
于 2021-10-15T15:14:38.043 回答
-1

我们运行 detox build 命令,它在 CI 中抛出了太多日志。 -quite参数因隐藏日志而失败。

最好的解决方案是将日志隐藏并保存在文件中:

npx detox build -c ios &> detox_build.log
于 2021-08-09T11:28:21.603 回答