OCLint的作用
Git 地址https://github.com/oclint/oclint
OClint是针对于C,C++,Objective-C 代码的静态分析工具,目的是提高软件质量并且减少代码中存在的潜在问题
- 可能出现的bug:if/else/try/catch 等条件语句空的声明
- 未使用的代码:未使用的局部变量以及参数
- 复杂的代码逻辑:高循环复杂度、NP 复杂度(懵)、高NCSS(懵)
- 冗余代码:冗余的条件表达式以及无效的括号
- 代码嗅觉:方法代码行过长或者参数过多
- 不好的代码习惯:颠倒的逻辑和参数的错误分配
静态代码分析工具是侦测编译器不可见的潜在缺陷的关键技术。OCLint 具有以下先进的代码检验特性:
- 依靠源码的抽象语法树来提高分析的精确度以及效率,误报率低动态规则
- 灵活可扩展的配置,确保用户可以自定义分析行为
- 命令行式的调用使持续集成成为可能
OCLint的需要安装支持
OCLint 的安装方式有很多中,这里我们选择最简单的方式:通过 Homebrew 安装。
安装 Homebrew
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
安装xcpretty
sudo gem install -n /usr/local/bin xcpretty
安装OCLint
brew tap oclint/formulae
brew install oclint
OCLint的使用
OCLint 有三个指令:oclint、oclint-json-compilation-database、oclint-xcodebuild。
- oclint:常规核心指令。
- oclint-json-compilation-database:从编译好的compile_commands.json 文件中读取配置信息并执行 oclint。
- oclint-xcodebuild:主要用于生成compile_commands.json文件,现在已经不进行维护了,我们可以用xcpretty替代,来生成json文件。
OCLint的使用
用Xcode检测代码 Demo
- 创建项目,首先在targets点添加按钮
- 在Cross-platform选项中,选“Aggregate”,然后命名为"OCLint":
- 接着选中OCLint Target,进入Build Phases选项,点左上角的加号,选择"New Run Script Phase"
- 然后输入脚本:
source ~/.bash_profile
cd ${PROJECT_DIR}
xcodebuild clean
xcodebuild | tee xcodebuild.log | xcpretty -r json-compilation-database -o compile_commands.json
oclint-json-compilation-database -- -report-type xcode
注: 如果 pod 导入 添加脚本 oclint-json-compilation-database -e Pods
- 接着选择OCLint Scheme,Command+B就可以执行了在执行前最好删除drivedata里面的数据缓存,以保证不会解析到旧的编译内容。编译成功后Xcode上会在不符合规则的代码上显示Warning:
测试结果
学习记录,欢迎批评指正