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

目录
相关文章
|
缓存 安全 程序员
【ARM学习】Cortex- A系列程序员学习指南
【ARM学习】Cortex- A系列程序员学习指南
528 0
|
XML Android开发 数据格式
Android深度定制化TabLayout:圆角,渐变色,背景边框,圆角渐变下划线,基于Android原生TabLayout
Android深度定制化TabLayout:圆角,渐变色,背景边框,圆角渐变下划线,基于Android原生TabLayout 在附录1的基础上丰富自定义的TabLayout,这次增加两个内容:1, 当选中某一个切换卡时候,文本字体变粗。
6483 0
|
11月前
|
缓存 5G 开发者
【提效】docker镜像构建优化-提速10倍
本文主要记录了自己通过查阅相关资料,一步步排查问题,最后通过优化Docerfile文件将docker镜像构建从十几分钟降低到1分钟左右,效率提高了10倍左右。
963 122
|
10月前
|
存储 编解码 算法
微帧WZ-JPEG图片编码压缩技术,实现超高压缩效率
在数字化时代,图像数据爆炸式增长,对传输和存储提出巨大挑战。JPEG作为互联网上最广泛应用的图片格式之一,占据超过60%的市场份额。微帧WZ-JPEG编码压缩技术通过优化DCT变换、量化及熵编码等步骤,实现了显著的压缩效率提升,平均节省27%的图片体积,复杂场景下可达40%,同时编码速度提升4倍,确保了高质量图像的快速加载与传输,极大提升了用户体验。此外,微帧还针对WebP、HEIF和AVIF等格式进行了专门优化,进一步彰显其在图像处理领域的技术优势。
|
12月前
|
人工智能 自然语言处理 前端开发
人工智能时代,我们依旧有无限的选择权!
“莫愁前路无知己” - 本文主要是为了缓解焦虑,以我与AI的互动为主线,分享了从童年科幻梦到工作中应用AI的经历。探讨了AI的现状与未来,强调了AI辅助编程的潜力和挑战,以及个人和企业应如何应对AI时代的变革。AI虽可能替代很多岗位,但也能带来新的机遇,关键在于适应和利用。
196 1
|
11月前
|
网络协议 算法 数据库
OSPF中的骨干区域详解
OSPF中的骨干区域详解
561 0
|
12月前
|
物联网 5G 调度
|
资源调度 分布式计算 大数据
【云计算与大数据技术】资源管理、调度模型策略的讲解
【云计算与大数据技术】资源管理、调度模型策略的讲解
1067 0
|
存储 缓存 固态存储
一步步实现SDDC-双节点VSAN部署
实验摘要: 1>ROBO VSAN部署(双节点VSAN) [难度★★复杂度★★]
|
C++
C/C++ 中的重命名函数
rename() 函数用于更改文件或目录的名称,即从 old_name 更改为 new_name,而不更改文件中存在的内容。此函数将文件名作为其参数。
745 0