iOS 持续集成系列 - 自动化 Code Review
2017-03-09 14:50
162 查看
介绍
为了保证代码质量,code review是非常重要的。通常我们在开发过程中只注意到了界面和逻辑的实现,却没考虑到代码的规范性,code review就是来严格要求我们自己的。我们采用OCLint+
xcpretty的方式对代码进行审查。在这里,我只介绍本地code review。
什么是OCLint
OCLint是一个代码静态分析描工具, 可以用来提高质量和减少缺陷, 它目前支持C, C++, Objective-C语言。什么是xcpretty
xcpretty是一个用于对xcodebuild的输出进行格式化。并包含输出report功能。安装
我们使用homebrew安装oclint:$ brew tap oclint/formulae
$ brew install oclint
如果安装不了,也可采用别的方式进行安装,教程。
然后安装xcpretty:
$ gem install xcpretty
生成compile_commands.json文件
进入工程目录,运行即可得到该文件:$ xcodebuild | xcpretty -r json-compilation-database –output compile_commands.json
如果你的工程带CocoaPods,则在xcodebuild时需要指定
-workspace test.xcworkspace -scheme test
配置Xcode
打开你的Xcode工程,添加一个新的target:取个简单点的名字,比如OCLint:
创建完成之后,为该target添加一个脚本:
复制以下内容到run Script中:
source ~/.bash_profile cd ${SRCROOT} xcodebuild clea xcodebuild | xcpretty -r json-compilation-database oclint-json-compilation-database \ -e Pods \ -- \ -disable-rule ObjCAssignIvarOutsideAccessors \ -rc=MINIMUM_CASES_IN_SWITCH=3 \ -rc=LONG_VARIABLE_NAME=20 \ -disable-rule ShortVariableName \ -rc=CYCLOMATIC_COMPLEXITY=10 \ -rc=LONG_CLASS=700 \ -rc=LONG_LINE=200 -rc=LONG_METHOD=80 \ -rc=NCSS_METHOD=40 \ -rc=NESTED_BLOCK_DEPTH=5 \ -rc=TOO_MANY_FIELDS=20 \ -rc=TOO_MANY_METHODS=30 \ -rc=TOO_MANY_PARAMETERS=6 \ -report-type xcode \
有些文件我们不想去做静态分析,如一些第三方库,我们可以进行设置,去忽略文件夹:
-e Pods
OCLint有一套默认的规则。我对这些默认的扫描规则做出修改,如忽略一些规则或者改变某些规则的阈值,这里是笔者自定义的一些扫描规则:
# 忽略 if折叠 -disable-rule CollapsibleIfStatements \ #忽略 直接使用变量 -disable-rule ObjCAssignIvarOutsideAccessors \ #switch case 最少数量 -rc=MINIMUM_CASES_IN_SWITCH=3 \ #变量名字最长字节 -rc=LONG_VARIABLE_NAME=20 \ #变量名字最短字节 -disable-rule ShortVariableName \ #圈复杂度 -rc=CYCLOMATIC_COMPLEXITY=10 \ #每个类最行数 -rc=LONG_CLASS=700 \ #每行字节数量 -rc=LONG_LINE=200 #每个方法行数 -rc=LONG_METHOD=80 \ #忽略注释后括号后的有效代码行数 -rc=NCSS_METHOD=40 \ #嵌套深度 -rc=NESTED_BLOCK_DEPTH=5 \ #字段数量 -rc=TOO_MANY_FIELDS=20 \ #方法数量 -rc=TOO_MANY_METHODS=30 \ #方法参数 -rc=TOO_MANY_PARAMETERS=6 \ -report-type xcode \
选择正确的Scheme进行build
Command+B
如果编译成功,我们能看到以下结果:
后记
这是本地code review的一种方法,如果需要配合svn进行服务器review,待后续我再来整理。相关文章推荐
- iOS 持续集成系列 - 自动化 Code Review
- iOS 持续集成系列 - 自动化 Code Review
- iOS 持续集成系列 - 自动化 Code Review
- iOS 持续集成系列 - 自动化 Code Review
- iOS 持续集成系列 - 自动化 Code Review
- 构建iOS持续集成平台(一)——自动化构建和依赖管理
- 构建iOS持续集成平台(三)——CI服务器与自动化部署
- 构建iOS持续集成平台(三)——CI服务器与自动化部署
- 构建iOS持续集成平台(三)——CI服务器与自动化部署
- 构建iOS持续集成平台(一)——自动化构建和依赖管理
- 构建iOS持续集成平台(一)——自动化构建和依赖管理
- iOS 持续集成系列
- 构建iOS持续集成平台(一)——自动化构建和依赖管理
- iOS 持续集成系列 - 开篇
- 【软件测试自动化-QTP系列讲座 5】== DOM技术的应用 ==
- 【软件测试自动化-QTP系列讲座 15】 == 揭开QTP的神秘面纱 (二)隐藏方法篇 ==
- 【软件测试自动化-QTP系列讲座 2】== 对象库及原理透析 ==
- 【软件测试自动化-QTP系列讲座 10】== QTP的两种回放模式 ==
- 【软件测试自动化-QTP系列讲座 14】 == 揭开QTP的神秘面纱 (一)隐藏对象篇 ==