用OCLint给iOS代码做静态分析
来源:互联网 发布:mac睡眠时间 编辑:程序博客网 时间:2024/05/16 09:39
原文链接:http://blog.csdn.net/uxyheaven/article/details/50818107
用OCLint给iOS代码做静态分析
可以对iOS代码做代码静态分析的工具有OCLint
, 这篇帖子说的就是如何使用这个工具. 转载请注明出处,晓月的博客:(http://blog.csdn.net/uxyheaven/article/details/50818107)
什么是OCLint
最好的介绍当然首选官方文档, 以下的说明摘选自官方文档:
OCLint是一个代码静态分析描工具, 可以用来提高质量和减少缺陷, 他目前支持C, C++, Objective-C语言, 他目前可以发现这些问题:
- 可能的bug - 空的 if / else / try / catch / finally 语句
- 未使用的代码 - 未使用的局部变量和参数
- 复杂的代码 - 高圈复杂度, NPath复杂, 高NCSS
- 冗余代码 - 多余的if语句和无用的括号
- 坏味道的代码 - 过长的方法和过长的参数列表
- 不好的使用 - 倒逻辑和入参重新赋值
安装
- 1
- 2
- 1
- 2
如果安装不了请翻墙.
使用
先编译一遍工程, 然后执行脚本就可以生成报告了. 如果不存在bash_profile
文件, 需要自己生成一个, 进到那个目录后touch .bash_profile
.
笔者先抛砖引玉的给出一个自定义了部分扫描规则的脚本.
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
有些文件是不想去做静态分析的, 如一些第三方库, 我们可以这样设置它, 去忽略文件夹:
- 1
- 1
OCLint是有一套默认的规则的. 你可以对这些默认的扫描规则做出修改, 如忽略一些规则或者改变某些规则的阈值, 这里是笔者自定义的一些扫描规则:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
扫描报告解读
脚本最终会生成一个oclintReport.html
页面去陈述扫描结果. 介绍了总共涉及多少文件, 其中有多少文件违反了规则, 各种优先级的规则违反了多少等等.
接下来就是详细的规则违反情况了:
- File - 违反规则的文件
- Location - 违反规则的代码位置
- Rule Name - 违反的规则名称
- Rule Category - 违反的规则类别
- Priority - 违反的规则优先级
- Message - 违反的规则描述
解读这些违反的规则就是进代码去看, 一般看到代码也就知道是什么原因了. 如果看了代码还是不理解, 可以去参考下官方的文档: http://docs.oclint.org/en/stable/rules/index.html
. 文档对每个规则还列出了demo.如
- empty else block // 空else
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
后记
最后就是配置下Jenkins, 让每次编译的同时, 都给出一个报告来.
- 用OCLint给iOS代码做静态分析
- 用OCLint给iOS代码做静态分析
- 用OCLint给iOS代码做静态分析
- 静态代码扫描--OCLint
- 【指导】iOS代码静态检查 -- oclint (+ xcodebuild + xcpretty + jenkins)
- iOS项目的静态代码扫描之OClint安装
- iOS项目的静态代码扫描之OClint使用
- 使用OClint进行iOS项目的静态代码扫描
- OCLint:静态代码分析工具(C、C++和Objective-C)
- [OCLint]OCLint代码检查规则
- 在xcode中使用OCLint做代码审查
- [OCLint]iOS项目中使用OCLint指导手册
- Clang &IOS 静态代码分析工具scan-build
- iOS静态代码分析时常见错误及解决办法
- [Linux]用Clang实现代码静态分析
- 关于静态代码分析
- 关于静态代码分析
- FxCop静态代码分析
- Angularjs 初级 简单介绍
- Excel VBA开发自动发送邮件
- rtmp/rtsp直播播放器选择
- 二叉树与堆——堆排序
- java list 交集 并集 差集 去重复并集
- 用OCLint给iOS代码做静态分析
- shell:读取文件的每一行内容并输出
- nyoj119 士兵杀敌(三)(线段树||RMQ)
- 腾讯2016实习生面试经验(已经拿到offer)
- 第一讲:Angular基础入门
- BZOJ3307: 雨天的尾巴
- 双显卡下编译caffe
- 机器学习算法~贝叶斯实现分类(包括python,解释,laplace平滑)
- 一个程序猿成长记:网易云短信接口开发