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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章