简介
OCLint是一个 静态代码分析 工具,通过检查C、c++
和Objective-C
代码并寻找潜在的问题.
OCLint
就是一个建立在 Clang
上的工具,能够发现代码中潜在的问题,可以用来提高质量和减少缺陷, 它目前支持C, C++, Objective-C
语言
OCLint可以发现的问题
- 可能的bug - 空的 if / else / try / catch / finally 语句
- 未使用的代码 - 未使用的局部变量和参数
- 复杂的代码 - 高圈复杂度, NPath复杂, 高NCSS
- 冗余代码 - 多余的if语句和无用的括号
- 坏味道的代码 - 过长的方法和过长的参数列表
- 不好的使用 - 倒逻辑和入参重新赋值
- …
有关更多 OCLint
的介绍见 http://oclint.org/
使用
使用文档 http://docs.oclint.org/en/stable/guide/xcodebuild.html
文档中有很多种使用方式:
- 和 xctool 一起使用
- 和 xcpretty 一起使用
- 在 xcode 内置脚本使用
xcpretty
使用最为简单,这里本人使用的 xcpretty
工具命令行
安装
brew tap oclint/formulae
brew install oclint
//安装xcpretty
sudo gem install xcpretty
//-help命令检测是否安装成功
oclint -help
创建所需要的文件
关于 xcpretty
我们使用其将 xcodebuild 的原始输出格式化到文件 compile_commands.json
xcodebuild [flags] | xcpretty -r json-compilation-database -o compile_commands.json
如果希望保留原始的xcodebuild输出,那么可以这样做:
xcodebuild [flags] | tee xcodebuild.log | xcpretty -r json-compilation-database -o compile_commands.json
[flags]
表示你可以配置的参数,xcodebuild在当前工程目录下可以不配置
tee xcodebuild.log
表示输出xcode日志为xcodebuild.log
调用分析指令
现在,通过编译命令。json文件,我们可以通过简单的调用来运行代码分析:
oclint-json-compilation-database -- [Your Option]
[Your Option]
是你需要配置的参数
就会进行扫描,输出报告
这里可以选择输出为html
或者其他类型文件 (--
后配置)有"text"、“html”、“json”、“pmd”、“xcode”几个类型
oclint-json-compilation-database -- -report-type html -o analysis.html
然后生成类似报告:
可以看到AFNetworking
的错误都写进去了,我们并不需要分析三方库的代码,OCLint 提供了过滤方法。
Pod等三方库的过滤
-e
: 过滤掉某些文件
oclint-json-compilation-database -e Pods -- -report-type html -o analysis1.html
查看官方文档可以看到相关的配置项
http://docs.oclint.org/en/stable/manual/oclint.html
官方文档
http://docs.oclint.org/en/stable/guide/xcpretty.html#generating-json-compilation-database-with-xcpretty