全部文章目录:http://my.oschina.net/ChenTF/blog/677112git
本篇文章地址: https://my.oschina.net/ChenTF/blog/806565github
若是对您有帮助还请 "赞" 一下哈, 有问题可留言或加QQ群:323276186objective-c
在Xcode8升级后, 原有的xctool已不支持Xcode8, 需改用xcodebuild + xcpretty 来替代xctool环节。本文是对具体修复内容与实践进行分享。以前如何设置看个人这篇文章: [实践]iOS Sonar集成流程详解。shell
Clean 环节 :json
原: runCommand /dev/stdout $xctoolCmdPrefix -scheme "$appScheme" cleanxcode
新: xcodebuild clean服务器
Build 环节 :app
原: runCommand /dev/stdout $xctoolCmdPrefix -scheme "$appScheme" -reporter json-compilation-database:compile_commands.json build 新: 指定证书与描述文件版本(run-sonar_V2.sh) xcodebuild -workspace "${workspaceFile}" -scheme "${appScheme}" CODE_SIGN_IDENTITY="${codesign}" PROVISIONING_PROFILE="${profilename}" ONLY_ACTIVE_ARCH=NO -configuration Release build | tee xcodebuild.log | xcpretty -r json-compilation-database --output compile_commands.json 新: 模拟器版本(run-sonar_V2.1.sh) xcodebuild -workspace "${workspaceFile}" -scheme "${appScheme}" -sdk iphonesimulator -destination 'platform=iOS Simulator,name=iPhone 6' ONLY_ACTIVE_ARCH=NO -configuration Release build | tee xcodebuild.log | xcpretty -r json-compilation-database --output compile_commands.json
本人将run-sonar_V2.sh修改, 造成了最新的脚步, 内部将xctool部分已修改为xcodebuild+xcpretty环节, 因Xcode8最新版须要制定证书与描述文件, 因此在sonar-project.properties中新增了sonar.objectivec.codesign与sonar.objectivec.profilename参数.iphone
接入须要的文件网站
经过脚原本更改Auto为Manual:
sed -i "" "s%\ProvisioningStyle.*%\ProvisioningStyle = Manual;%g" "${projectFile}/project.pbxproj"
##4.2. xcpretty 提示 ":in `===': invalid byte sequence in US-ASCII (ArgumentError)" 设置本地环境: export LC_ALL="en_US.UTF-8"
用最高的root用户权限安装竟然还提示这个错误!! 查了下发现是在OS X10.11后, 即便是管理员帐户也不能修改/usr/bin目录. 修复办法:
方法一: 安装到/usr/local/bin目录下
$ sudo gem install -n /usr/local/bin xcpretty --version 0.2.3
方法二: 在Recovery模式下安装
是由于项目中错误太多, 超过了oclint的默认上限, 因此oclint中止了工做.
设置-max-priority-1 -max-priority-2 -max-priority-3的值, 提升上限,
例:oclint-json-compilation-database -- -max-priority-1 10000 -max-priority-2 10000 -max-priority-3 10000 -rc LONG_LINE=150 -report-type pmd -o oclint.xml
将oclint升级到0.11版本以上, oclint0.10.3版本分析Xcode8工程分析不出来.
在oclint的0.11版本, 新增了些规则, 须要更新sonar服务器上对应的规则列表.
路径:sonar-objective-c-master-2/sonar-objective-c-plugin/src/main/resources/org/sonar/plugins/objectivec下的profile-oclint.xml与rules-oclint.xml这两个文件。 本人已将最新的规则列表进行整理, 直接替换便可.
在脚本中设置
sed -i "" "s%\DevelopmentTeam.*%\ %g" "${projectFile}/project.pbxproj" sed -i "" "s%\DEVELOPMENT_TEAM.*%\ %g" "${projectFile}/project.pbxproj"
有朋友实践使用模拟器也能跑出结果, 同时也就不须要制定证书与描述文件了。这确实是一种更方便的方法, 将xcodebuild build的命令中添加以下设置, 并删掉证书与描述文件便可。 感谢伦, WillkYang同窗.
-sdk iphonesimulator -destination 'platform=iOS Simulator,name=iPhone 6'
在Jenkins所在机器上经过Terminal能执行xcpretty命令, 但在Jenkins网站上执行提示command not found. 是环境问题.
解决方案: 在Execute shell的第一行加入环境设置就可, 例子
PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
欢迎转载, 请注明出处.