博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[实践]Sonar Xcode8兼容
阅读量:6574 次
发布时间:2019-06-24

本文共 3395 字,大约阅读时间需要 11 分钟。

  hot3.png

所有文章目录:

本篇文章地址:

如果对您有帮助还请 "赞" 一下哈, 有问题可留言或加QQ群:323276186

1. 背景

在Xcode8升级后, 原有的xctool已不支持Xcode8, 需改用xcodebuild + xcpretty 来替代xctool环节。本文是对具体修复内容与实践进行分享。之前如何设置看我的这篇文章: 。

2. 主要替代环节

Clean 环节 :

原: runCommand /dev/stdout $xctoolCmdPrefix -scheme "$appScheme" clean

新: xcodebuild clean

Build 环节 :

原: 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

3. 修复步骤

本人将run-sonar_V2.sh修改, 形成了最新的脚步, 内部将xctool部分已修改成xcodebuild+xcpretty环节, 因Xcode8最新版需要制定证书与描述文件, 所以在sonar-project.properties中新增了sonar.objectivec.codesign与sonar.objectivec.profilename参数.

  • 安装xcpretty
  • 更新oclint到0.11版本
  • 将run-sonar_V2.sh与sonar-project.properties拷贝到项目的根目录下, 修改sonar-project.properties参数
  • 修改sonar服务器的规则(看4.6)
  • 运行出结果

4. Xcode8兼容时遇到的问题

4.1. xcodebuild 提示Build Fail。提示"Set the provisioning profile value to "Automatic" in the build settings editor, or switch to manual signing in the project editor."

通过脚本来更改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"

4.3. 安装xcpretty出错"Operation not permitted"

用最高的root用户权限安装居然还提示这个错误!! 查了下发现是在OS X10.11后, 即使是管理员账户也不能修改/usr/bin目录. 修复办法:

方法一: 安装到/usr/local/bin目录下

$ sudo gem install -n /usr/local/bin xcpretty --version 0.2.3

方法二: 在Recovery模式下安装

  • 重启电脑
  • 按住Command+R进入Recovery模式
  • 打开Terminal
  • gem install xcpretty --version 0.2.3

4.4. oclint分析错误报”too many errors emitted, stopping now”

是因为项目中错误太多, 超过了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

4.5. oclint生成的数据内容为空, 或者生不成制定的文件

将oclint升级到0.11版本以上, oclint0.10.3版本分析Xcode8工程分析不出来.

4.6. 执行sonar-runner时提示”The rule ‘XXX’ does not exist”

在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这两个文件。 本人已将最新的规则列表进行整理, 直接替换即可.

4.7 项目中设置了错误的TeamID,用脚本设置的正确TeamID不起作用

在脚本中设置

sed -i "" "s%\DevelopmentTeam.*%\ %g" "${projectFile}/project.pbxproj"sed -i "" "s%\DEVELOPMENT_TEAM.*%\ %g" "${projectFile}/project.pbxproj"

4.8 关于选择模拟器调试

有朋友实践使用模拟器也能跑出结果, 同时也就不需要制定证书与描述文件了。这确实是一种更方便的方法, 将xcodebuild build的命令中添加如下设置, 并删掉证书与描述文件即可。 感谢伦, WillkYang同学.

-sdk iphonesimulator -destination 'platform=iOS Simulator,name=iPhone 6'

4.9 xcpretty提示command not found

在Jenkins所在机器上通过Terminal能执行xcpretty命令, 但在Jenkins网站上执行提示command not found. 是环境问题.

解决方案: 在Execute shell的第一行加入环境设置就可, 例子

PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

本篇文章地址:

欢迎转载, 请注明出处.

转载于:https://my.oschina.net/ChenTF/blog/806565

你可能感兴趣的文章
浅谈java垃圾回收机制
查看>>
shell脚本学习之for循环
查看>>
stark组件(1):动态生成URL
查看>>
169. Majority Element
查看>>
大整数加法
查看>>
下拉菜单
查看>>
C/C++中extern关键字详解
查看>>
[清华集训2014]玛里苟斯
查看>>
Doctype作用?严格模式与混杂模式如何区分?它们有何意义
查看>>
jquery选择器(可见对象,不可见对象) +判断,对象(逆序)
查看>>
0029-求最小的数
查看>>
【MVC+EasyUI实例】对数据网格的增删改查(上)
查看>>
第三章:如何建模服务
查看>>
EF CodeFirst下数据库更新
查看>>
Project Euler 345: Matrix Sum
查看>>
mysql允许远程登录
查看>>
js判断undefined类型
查看>>
问题账户需求分析
查看>>
你可能不知道的技术细节:存储过程参数传递的影响
查看>>
u3d移动游戏优化规范
查看>>