iOS 持续集成系列 - 自动化 Code Review

介绍

为了保证代码质量,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:

新的target

取个简单点的名字,比如OCLint:

命名target

创建完成之后,为该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,待后续我再来整理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值