LLVM在静态分析上的增强 @ WWDC 2013

简介:

在代码还没有真正跑起来的时候,可以利用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

目录
相关文章
|
8月前
|
算法 安全 Unix
基于wasm的探索与研究(三)
基于wasm的探索与研究(三)
61 1
|
9月前
|
算法 编译器 测试技术
跨平台构建的艺术:使用 CMake 实现项目移植的全面指南
跨平台构建的艺术:使用 CMake 实现项目移植的全面指南
464 5
|
自然语言处理 算法 编译器
方舟编译器最新技术细节
方舟编译器最新技术细节
方舟编译器最新技术细节
|
缓存 JavaScript Java
说说 方舟编译器
说说 方舟编译器
说说 方舟编译器
|
API 开发者 Windows
开发者逆向工程将《星际争霸》移植到ARM平台
醒来吧,我的孩子们。拥抱你们与生俱来的荣耀。你们须知,我是你们的主宰,虫族永恒的意志。你们生来就是为我服务的。
301 0
开发者逆向工程将《星际争霸》移植到ARM平台
|
Rust 前端开发 IDE
rcore,zcore,兼谈fuchsia:一种快速编程教学系统和rust编程语言快速学习项目
本文关键字:一种快速编程教学系统和编程语言设想,把devops和hypersior集成到os和app,learn rust:the hard way笨方法学rust
627 0
rcore,zcore,兼谈fuchsia:一种快速编程教学系统和rust编程语言快速学习项目
|
前端开发 编译器 C++
深入研究Clang(一)Clang和LLVM的关系及整体架构
作者:史宁宁(snsn1984) Clang和LLVM的关系        Clang和LLVM到底是什么关系,这是在研究Clang的过程中所不可避免的一个问题。
1795 0
|
Rust 资源调度
基于 Rust 的 WebAssembly 工程开发过程小记
使用 rust 开发 web assembly 的 happpy path
2106 0