IOS OClint 的安装使用与代码分析

前言

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

OCLint 官网简介

oclint 的安装

1.通过 homebrew 安装非常方便、快速 

homebrew 安装方法

2.使用 xcode 代码分析需要安装 oclint和xcpretty,都可以在终端进行安装

打开终端 命令行 依次输入以下命令安装 oclint

brew tap oclint/formulae  

brew install oclint


用gem安装xcpretty

sudo gem install xcpretty


确认下是否成功安装 oclint

终端输入 oclint  如给出以下提示,代表成功安装 oclint

3.使用 oclint

oclint 详细使用方法

使用 oclint 对 xcode 项目进行静态代码分析首先需要项目配置,即添加 target

1.file-new-target


添加target

 next

添加脚本


2.在xcode项目目录下创建分析的Shell脚本文件analysis.sh


创建.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.使用终端打开项目目录

cd 项目路径 

打开.sh文件 sudo  ./analysis.sh

如果报错

使用sh ./analysis.sh打开即可,终端如以下即开始分析生成目标文件(compile_commands.json)



5.分析完之后打开 xcode,来输入可执行的脚本即可


接下来 command + b 编译 ,如果编译过程中报错 oclint: error: violations exceed threshold

错误原因是超过了issue 的阈值,在脚本末尾加上 -max-priority-1=9999 -max-priority-2=9999 -max-priority-3=9999 

过滤项目中的第三方警告

如果 pod 导入  添加脚本 oclint-json-compilation-database -e Pods

如果手动导入   添加脚本  oclint-json-compilation-database -e FMDB -e XMLReader -e Masonry -e MJRefresh   类似即可


编译成功后Xcode上会在不符合规则的代码上显示Warning


可以自己参考规则列表 来自定义个人需要的规则

关于 oclint 指令 oclint、oclint-json-compilation-database、oclint-xcodebuild

oclint 是核心指令 oclint [options]  -- [compiler flags] 

[options]为一些参数选项,可以是规则加载选项、报告形式选项等:

-R <路径> : 检测所用的规则的路径,默认路径$(/path/to/bin/oclint)/../lib/oclint/rules

-disable-rule <规则名>: 让相对应的规则失效。

-rc <参数>=<值> :修改阈值

-report-type <报告类型>,有"text"、“html”、“json”、“pmd”、“xcode”几个类型

-o <路径> 报告生成路径。

例:oclint  -R  /path/to/rules   -disable-rule ObjCAssignIvarOutsideAccessors -report-type xcode 是指忽略掉规则文件中指定规则

oclint-json-compilation-database 指令

oclint-json-compilation-database 指令有过滤文件选项

-i :包含进某些文件

-e : 过滤掉某些文件

xcpretty

用xcpretty生成OClint 解析用的json 文件

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容