iOS使用OCLint做静态代码分析

iOS使用OCLint做静态代码分析

为什么要做代码检查?

  • 检查代码是否误写或者错写,导致一些问题的产生,不能及时发现
  • 减少工程的警告,防止后续系统版本更新的不兼容问题
  • 规范代码风格,变量和方法的命名、空格和空白行,提高代码的可读性
  • 减少代码冗余

初识OCLint(OCLint官网

oclint 是对C、C++、Objective-C进行静态代码检查的工具 ,使用 oclint 对代码进行静态分析可以检查和提高项目代码质量、寻找潜在的问题…如:

  • 可能的错误-if / else / try / catch / finally语句为空
  • 未使用的代码 - 未使用的局部变量和参数
  • 复杂的代码 - 高圈复杂度,NPath复杂度和高NCSS
  • 冗余代码 - 冗余if语句和无用的括号
  • 代码气味 - 长方法和长参数列表
  • 错误做法 - 逻辑和参数的重新分配

注:NPath 复杂度是一个方法中各种可能的执行路径总和 ; NCSS有效代码行
以上翻译自OCLint官网

OCLint安装和使用

安装

使用第三方的软件会比使用xcodebuild方便些
最新xctool的build方法已经弃用,不能配合OCLint使用,推荐使用xcpretty
打开终端 一次输入一下命令

// 安装OCLint
brew tap oclint/formulae
brew install oclint
// 安装xcpretty
gem install xcpretty

验证是否安装oclint成功
终端输入: oclint 如果输出以下内容,表示安装成功
在这里插入图片描述

使用

oclint 详细使用方法

1、到这,确定你已经有一个xcode的项目(不管是否使用pod)
2、在你的项目下创建分析的shell脚本文件analysis.sh
在这里插入图片描述
3、在.sh文件中写入以下示例内容(compile_commands.json是生成的日志文件名)

# 移除原有的生成文件
xcodebuild clean | xcpretty
rm -r build
rm -r compile_commands.json
# Build和把日志写到目标文件
xcodebuild | xcpretty -r json-compilation-database --output compile_commands.json

文件内容截图:
在这里插入图片描述
4、打开终端,进入你的项目根目录
(1)cd 项目路径
(2)打开.sh文件
执行:sh ./analysis.sh,终端会开始分析并生成目标文件(compile_commands.json)
在这里插入图片描述
执行结果可能会出现错误,但也没关系,继续往下走
5、分析完之后打开xcode,在项目的target,Build phases创建一个Run Script
在这里插入图片描述
6、在里面输入以下内容:

oclint-json-compilation-database -e Pods oclints_args – -report-type xcode -max-priority-1=9999 -max-priority-2=9999 -max-priority-3=9999

在这里插入图片描述
注:如果不加 -max-priority-1=9999 -max-priority-2=9999 -max-priority-3=9999 ,command + b 编译,可能就会报错 oclint:error:violations exceed threshold
原因是超过了issue的阈值,所以在脚本末尾加上 -max-priority-1=9999 -max-priority-2=9999 -max-priority-3=9999

7、过滤项目中的第三方警告(第三方的警告我们不予修改)

  • 如果pod导入,添加的脚本就是 oclint-json-compilation-database -e Pods
  • 如果是手动导入,添加的脚本就是 oclint-json-compilation-database -e FMDB -e XMLReader -e Masonry -e MJRefresh 类似,将所有手动添加的第三方库都添加

8、再次编译,xcode上就会出现很多warning,在所有不符合规则的代码上显示warning
如果要忽略一些警告,可自定义OCLint的规则,建立.OCLint的文件,可查看我的下一篇文章

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值