OCLint是一个强大的静态代码分析工具,可以用来提高代码质量,查找潜在的bug,主要针对c,c++和Objective-c的静态分析。功能非常强大。
目前只是简单使用,浮于表面。。。。。
1、oclint 与 xcpretty的安装
推荐是用Homebrew 来安装,快速且节省精力,也可以选择源码安装或者release包来安装,不过需要配置环境变量的内容。使用Homebrew 安装时,需要先设置brew的第三方仓库,然后安装,xcpretty 用于解析xcodebuild 构建日志,解析后的结果交给oclint来使用:
oclint的安装:
1 2
| brew tap oclint/formulae brew install oclint
|
xcpretty的安装:
1
| sudo gem install xcpretty
|
2、构建与静态代码扫描
1)、构建与解析日志
我们使用xcodebuild 来构建。
xcodebuild 默认构建的格式Release ,需要构建Debug 或者 AdHoc 包自行添加相关参数来执行。build之后,使用xcpretty 来解析编译日志。
1 2 3 4 5 6 7
| CODE_SIGN_IDENTITY="xxx" DEVELOPER_DIR="/Applications/Xcode7.app" xcodebuild CODE_SIGN_IDENTITY=${CODE_SIGN_IDENTITY} clean DEVELOPER_DIR="/Applications/Xcode7.app" xcodebuild CODE_SIGN_IDENTITY=${CODE_SIGN_IDENTITY} | xcpretty -r json-compilation-database cp build/reports/compilation_db.json compile_commands.json
|
-r json-compilation-database 制定的数据的输出格式为json格式。输出的数据为build/reports/compilation_db.json
2)、解析结果使用oclint做扫描
使用oclint时需要将build/reports/compilation_db.json 重新命名为 compile_commands.json 并移动至当前目录。
1 2
| oclint-json-compilation-database -e Pods -- -o=lint.xml -report-type=pmd -stats -max-priority-1=9999 -max-priority-2=9999 -max-priority-3=9999 -rc LONG_LINE=500 -rc LONG_VARIABLE_NAME=100
|
将结果输出格式为pmd 格式,然后通过jenkins的pmd插件就可以做结果的展示了。
3)、oclint其它参数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| -e Pods 去掉依赖的第三方库的扫描 -- -rc=LONG_LINE=200 改变默认函数行数为100 LINT_DISABLE_RULES=\"-disable-rule=LongClass \\ -disable-rule=LongLine \\ -disable-rule=LongMethod \\ -disable-rule=LongVariableName \\ -disable-rule=ShortVariableName \\ -disable-rule=HighNcssMethod \\ -disable-rule=DeepNestedBlock \\ -disable-rule=TooManyFields \\ -disable-rule=TooManyMethods \\ -disable-rule=TooManyParameters \\ -disable-rule=IvarAssignmentOutsideAccessorsOrInit\"
|
命令行最后加入 $LINT_DISBALE_RULES 可以禁用某些不需要的规则
3、中间出现的问题
1)oclint: error: violations exceed threshold
调研之后确认是我们的代码错误多,超过了阈值,所以调大了-max-priority-1=9999 -max-priority-2=9999 -max-priority-3=9999
2)出现了code sign错误
在xcodebuild后面加上参数 CODE_SIGN_IDENTITY就行了。