2016-03-26 92 views
5

我有一個建立在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 

我需要什麼,以使該行警告失敗的特拉維斯CI構建呢?你可以在我的項目here上看到相關的請求。

回答

1

我設法找到了一種方法,使這項工作從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 
0

我認爲您想將-Wunused-value添加到您的構建設置的其他警告標誌部分,並將「將警告視爲錯誤」設置爲是。

+1

我不只是想要這個特定的警告失敗的構建。我希望_all_靜態分析警告失敗的構建。將警告作爲錯誤來處理 - 將藍色靜態分析結果視爲警告? –

+0

^更新:它似乎沒有。 –

4

我能得到這個工作的唯一方法是使用方法詳細here

這兩個參數添加到您的xcodebuildscan -x命令

CLANG_ANALYZER_OUTPUT=plist-html \ 
CLANG_ANALYZER_OUTPUT_DIR="$(pwd)/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