CLint 是一个强大的静态代码分析工具, 可以用来提高代码质量, 查找潜在的 bug, 主要针对c,c++和 Objective-c 的静态分析。 功能非常强大。
1、 oclint 与 xcpretty 的安装
推荐是用 Homebrew 来安装, 快速且节省精力, 也可以选择源码安装或者 release 包来安装,不过需要配置环境变量的内容。 使用Homebrew 安装时, 需要先设置 brew 的第三方仓库,然后安装,
xcpretty 用于解析 xcodebuild 构建日志, 解析后的结果交给 oclint 来使用。
oclint 的安装还是比较简单方便的, 推荐安装方法:
oclint 的安装:
xcpretty 的安装:
简单轻松的三条命令环境部署完成。
2、 构建与静态代码扫描
1) 构建与解析日志
xcodebuild 命令构建部署
xcodebuild 默认构建的格式 Release , 如果特殊需求, 需要在 xcode 工程内去修改相关工程配置, 构建Debug 或者 Ad 包自行添加相关参数。 build 之后, 使用 xcpretty 来解析编译日志即可。
brew tap oclint/formulae
brew install oclint
sudo gem install xcpretty
的输出格式为 json 格式。
输出的数据为
build/reports/compilation_db.json。
CODE_SIGN_IDENTITY="xxx"
DEVELOPER_DIR="/Applications/Xcode7.app"xcodebuild
CODE_SIGN_IDENTITY=${CODE_SIGN_IDENTITY} clean
DEVELOPER_DIR="/Applications/Xcode7.app"xcodebuild
2) 解析结果使用 oclint 做扫描
使用oclint 时需要将 build/reports/compilation_db.json 重新命名为 compile_commands.json
并移动至当前目录。
将结果输出格式为
pmd 格式, 然后通过 jenkins 的 pmd 插件就可以做结果的展示了。
3) oclint 其它参数
-e Pods
-- -rc=LOG_LINE =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 就行了
CODE_SIGN_IDENTITY=${CODE_SIGN_IDENTITY} | xcpretty -r json-compilation-database
cp build/reports/compilation_db.json compile_commands.json
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
微信+17031115530,拉测试微信群交流
网友评论