LLVM在静态分析上的增强 @ WWDC 2013
2013-07-31 21:10
218 查看
在代码还没有真正跑起来的时候,可以利用Clang对代码进行静态分析。
1. 可以应用快捷键Shift+Command+B对项目代码进行分析:
2. 也可以针对某个文件进行分析(现有版本貌似不能针对特定文件):
3. 或者选择在构建过程中同时进行静态分析(深度或者快速):
通常,我们静态分析可以发现下面一些问题:
1. Dead store —— 对一个局部变量赋值后就再也没用过了。
2. 使用到了未初始化的变量。
3. 可能存在内存泄露。
4. 逻辑上可能存在问题,比如对空指针解引用。
而在新版本的LLVM中,新增了一个可能对App健壮性有不小帮助的分析点——在集合/容器结构中插空:
可以看出,Clang在静态分析时会对代码逻辑进行一些假设,分析是否有可能插入空值。
此外,在内存管理方面也有一些改进,比如内存分配和释放的一致性考虑,以及释放后可能存在的访问野指针问题:
这两点主要是为C++代码考虑的,好比在OC代码中release之后置为nil,在C++代码中,释放内存后也应该置空。
最后就是在跨函数上的分析了。在Xcode 4.3时代,静态分析只能针对单个函数;而在Xcode 4.4版本,开始支持基本的跨函数调用的分析;现在Xcode 5集成了新的LLVM,在跨函数调用分析上有了进一步增强。
遗憾的是,我对这一块体验不多,肚子里面笔墨不够,一时写不出什么东西来。。。希望有高手不吝赐教。
——Jason Lee @ Hangzhou
1. 可以应用快捷键Shift+Command+B对项目代码进行分析:
2. 也可以针对某个文件进行分析(现有版本貌似不能针对特定文件):
3. 或者选择在构建过程中同时进行静态分析(深度或者快速):
通常,我们静态分析可以发现下面一些问题:
1. Dead store —— 对一个局部变量赋值后就再也没用过了。
2. 使用到了未初始化的变量。
3. 可能存在内存泄露。
4. 逻辑上可能存在问题,比如对空指针解引用。
而在新版本的LLVM中,新增了一个可能对App健壮性有不小帮助的分析点——在集合/容器结构中插空:
可以看出,Clang在静态分析时会对代码逻辑进行一些假设,分析是否有可能插入空值。
此外,在内存管理方面也有一些改进,比如内存分配和释放的一致性考虑,以及释放后可能存在的访问野指针问题:
这两点主要是为C++代码考虑的,好比在OC代码中release之后置为nil,在C++代码中,释放内存后也应该置空。
最后就是在跨函数上的分析了。在Xcode 4.3时代,静态分析只能针对单个函数;而在Xcode 4.4版本,开始支持基本的跨函数调用的分析;现在Xcode 5集成了新的LLVM,在跨函数调用分析上有了进一步增强。
遗憾的是,我对这一块体验不多,肚子里面笔墨不够,一时写不出什么东西来。。。希望有高手不吝赐教。
——Jason Lee @ Hangzhou
相关文章推荐
- LLVM在静态分析上的增强 @ WWDC 2013
- LLVM在警告方面的改进 @ WWDC 2013
- LLVM对注释的新增支持 @ WWDC 2013
- LLVM对注释的新增支持 @ WWDC 2013
- MFC中CListCtrl控件的静态与动态创建的实例分析
- Windbg漏洞分析之CVE-2013-2551
- [BuildRelease]C++代码静态分析工具splint
- 静态分析工具及使用总结(三)
- 黑马程序员-------(高新技术)静态导入、可变参数、增强for循环、基本数据类型的自动拆箱与装箱
- 常用 Java 静态代码分析工具的分析与比较
- 关于c++类静态成员分析
- Cppcheck 1.54 C/C++静态代码分析工具
- NET程序的破解--静态分析(Xenocode Fox 2006 Evaluation)
- Office 365 和 Office 2013 对比分析
- 网站生成HTML静态页面对硬盘的影响分析
- 百度2013校园招聘笔试题 个人答案分析
- 静态时序分析(Static Timing Analysis)基础及应用(下)1 [zz]
- WWDC 2013 Session笔记--iOS7中的ViewController切换
- Coverity 静态分析 VS Code Review 代码审查
- 如何分析android的OOM,与java静态代码分析工具