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

Dov*_*Dov 4 xcode static-analysis xcodebuild travis-ci

我在GitHub上有一个项目,该项目在Travis CI上自动构建。即使我有一个静态分析器问题,我的代码(buildfixbranch,commit 3ebc41a8b4738bce926b39cc3869c6dce8bed9bc)的当前修订版也已成功。这是xcodebuild命令:

xcodebuild -workspace UnrarKit.xcworkspace -scheme UnrarKit -sdk macosx -configuration Release analyze test
Run Code Online (Sandbox Code Playgroud)

我还将整个项目的“将警告作为错误处理”设置为“是”(对于内部版本)。我从xcodebuild以下获得此输出:

The following commands produced analyzer issues:
  Analyze Classes/URKArchive.mm
(1 command with analyzer issues)
Run Code Online (Sandbox Code Playgroud)

我xcodebuild在本地终端中复制了此文件,结果相同。

为什么xcodebuild仍然返回0并允许我的构建成功?xcodebuild如果结果无法使用,为什么要首先进行分析?如果是bug,我将其提交给Apple,但目前我有可能做错了事。

Jer*_*mad 5

我认为这是返回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
Run Code Online (Sandbox Code Playgroud)

我还试图找到一种使它返回除0以外的值的方法,我唯一想到的是:

xcodebuild analyze ... && [[ -z `find analyzer -name "*.html"` ]]
Run Code Online (Sandbox Code Playgroud)