欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

iOS开发-代码分析OCLint工具

程序员文章站 2022-07-13 21:52:13
...

简介

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

文档中有很多种使用方式:

  1. 和 xctool 一起使用
  2. 和 xcpretty 一起使用
  3. 在 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

tee xcodebuild.log 表示输出xcode日志为xcodebuild.log

调用分析指令

现在,通过编译命令。json文件,我们可以通过简单的调用来运行代码分析:

oclint-json-compilation-database -- [Your Option]

就会进行扫描,输出报告

这里可以选择输出为html或者其他类型文件 (-- 后配置)有"text"、“html”、“json”、“pmd”、“xcode”几个类型

oclint-json-compilation-database -- -report-type html -o analysis.html

然后生成类似报告:
iOS开发-代码分析OCLint工具
可以看到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