为什么静态分析器问题不会导致我的CI构建失败?

时间:2017-01-29 14:09:41

标签: xcode travis-ci static-analysis xcodebuild

我有一个项目on GitHub,其中包含自动构建on Travis CI。我的代码(buildfix分支,提交3ebc41a8b4738bce926b39cc3869c6dce8bed9bc)的当前版本正在成功,即使我有一个静态分析器问题。这是xcodebuild命令:

xcodebuild -workspace UnrarKit.xcworkspace -scheme UnrarKit -sdk macosx -configuration Release analyze test

我还将整个项目的“将警告视为错误”设置为YES(对于发布版本)。我从xcodebuild得到了这个输出:

The following commands produced analyzer issues:
  Analyze Classes/URKArchive.mm
(1 command with analyzer issues)

我在本地终端用xcodebuild复制了相同的结果。

为什么xcodebuild仍然返回0并允许我的构建成功?如果不能使用结果,为什么允许xcodebuild首先进行分析?如果这是一个错误,我会将它归档给Apple,但是目前我对这种可能性做错了。

2 个答案:

答案 0 :(得分:4)

我认为这是预期的行为返回0.毕竟最后的日志是** ANALYZE SUCCEEDED **。 您可以使用

获取HTML报告
xcodebuild -workspace UnrarKit.xcworkspace -scheme UnrarKit -sdk macosx -configuration Release analyze test CLANG_ANALYZER_OUTPUT=html CLANG_ANALYZER_OUTPUT_DIR=analyzer
find analyzer -name *.html

我也试图找到一种方法让它返回0以外的东西,我唯一想到的是:

xcodebuild analyze ... && [[ -z `find analyzer -name "*.html"` ]]

答案 1 :(得分:2)

对于Gitlab CI / CD,我使用以下bash语句进行了类似的功能:

echo "failOnWarnings" | exit `find analyzer -name "*.html" -print -quit | wc -l`

如果 analyzer 文件夹中有任何html文件,则退出代码将为1(表示失败),否则退出代码将为0(表示成功)。

它已在GitLab MacOS运行程序11.11.3(darwin / amd64)上进行了测试,并且可以运行。 \ o /