使静态分析失败导致 Travis 上的构建失败
Make static analysis failure cause build failure on Travis
我在 Travis CI 上有一个 Objective-C iOS 图书馆。我刚刚在我的 .travis.yml
文件中启用了静态分析,它发现了一个问题(死存储),但它并没有使 Travis 上的构建失败。这是我的 .travis.yml
中的相关行(为了便于阅读而换行):
- set -o pipefail && xcodebuild analyze
-workspace Example/BonMot.xcworkspace
-scheme BonMot-Example
-destination 'name=iPhone 6' ONLY_ACTIVE_ARCH=NO | xcpretty
我需要做什么才能导致此行中的警告导致 Travis CI 上的构建失败?你可以在我的项目here.
上看到相关的pull request
我认为您想将 -Wunused-value
添加到构建设置的其他警告标志部分并将 "Treat Warnings as Errors" 设置为是。
我能让它工作的唯一方法是使用详细的方法here
将这两个参数添加到您的 xcodebuild
或 scan -x
命令中
CLANG_ANALYZER_OUTPUT=plist-html \
CLANG_ANALYZER_OUTPUT_DIR="$(pwd)/clang"
如果有 clang 警告,这将生成一个 HTML 文件。所以检查这个文件是否存在。
if [[ -z `find clang -name "*.html"` ]]; then
echo "Static Analyzer found no issues"
else
echo "Static Analyzer found some issues"
exit 123
fi
在 this blog post 的帮助下,我设法找到了一种方法来完成这项工作。以下是示例 .travis.yml
文件的相关部分:
language: objective-c
rvm:
- 2.2.4
osx_image: xcode7.3
install:
- gem install xcpretty --no-rdoc --no-ri --no-document --quiet
- export PYTHONUSERBASE=~/.local
- easy_install --user scan-build
script:
# use scan-build with --status-bugs to fail the build for static analysis warnings per http://jonboydell.blogspot.ca/2013/02/clang-static-analysis.html
- export PATH="${HOME}/.local/bin:${PATH}" # I forget whether this was necessary. Try omitting it and see what happens!
- set -o pipefail && scan-build --status-bugs xcodebuild analyze -workspace MyWorkspace.xcworkspace -scheme MyScheme -destination 'name=iPhone 6' ONLY_ACTIVE_ARCH=NO | xcpretty
我在 Travis CI 上有一个 Objective-C iOS 图书馆。我刚刚在我的 .travis.yml
文件中启用了静态分析,它发现了一个问题(死存储),但它并没有使 Travis 上的构建失败。这是我的 .travis.yml
中的相关行(为了便于阅读而换行):
- set -o pipefail && xcodebuild analyze
-workspace Example/BonMot.xcworkspace
-scheme BonMot-Example
-destination 'name=iPhone 6' ONLY_ACTIVE_ARCH=NO | xcpretty
我需要做什么才能导致此行中的警告导致 Travis CI 上的构建失败?你可以在我的项目here.
上看到相关的pull request我认为您想将 -Wunused-value
添加到构建设置的其他警告标志部分并将 "Treat Warnings as Errors" 设置为是。
我能让它工作的唯一方法是使用详细的方法here
将这两个参数添加到您的 xcodebuild
或 scan -x
命令中
CLANG_ANALYZER_OUTPUT=plist-html \
CLANG_ANALYZER_OUTPUT_DIR="$(pwd)/clang"
如果有 clang 警告,这将生成一个 HTML 文件。所以检查这个文件是否存在。
if [[ -z `find clang -name "*.html"` ]]; then
echo "Static Analyzer found no issues"
else
echo "Static Analyzer found some issues"
exit 123
fi
在 this blog post 的帮助下,我设法找到了一种方法来完成这项工作。以下是示例 .travis.yml
文件的相关部分:
language: objective-c
rvm:
- 2.2.4
osx_image: xcode7.3
install:
- gem install xcpretty --no-rdoc --no-ri --no-document --quiet
- export PYTHONUSERBASE=~/.local
- easy_install --user scan-build
script:
# use scan-build with --status-bugs to fail the build for static analysis warnings per http://jonboydell.blogspot.ca/2013/02/clang-static-analysis.html
- export PATH="${HOME}/.local/bin:${PATH}" # I forget whether this was necessary. Try omitting it and see what happens!
- set -o pipefail && scan-build --status-bugs xcodebuild analyze -workspace MyWorkspace.xcworkspace -scheme MyScheme -destination 'name=iPhone 6' ONLY_ACTIVE_ARCH=NO | xcpretty