Xcode的Analyze靜態(tài)分析

前言

使用Xcode自帶的靜態(tài)分析工具 Product->Analyze(快捷鍵command+shift+B)可以找出代碼潛在錯誤,如內(nèi)存泄露,未使用函數(shù)和變量等

所謂靜態(tài)內(nèi)存分析, 是指在程序沒運行的時候, 通過工具對代碼直接進行分析

根據(jù)代碼的上下文的語法結(jié)構(gòu), 讓編譯器分析內(nèi)存情況, 檢查是否有內(nèi)存泄露

Analyze主要分析以下四種問題:

1、邏輯錯誤:訪問空指針或未初始化的變量等;

2降传、內(nèi)存管理錯誤:如內(nèi)存泄漏等拜轨; 比如ARC下,內(nèi)存管理不包括core foundation

3纳本、聲明錯誤:從未使用過的變量骇两;

4宴咧、Api調(diào)用錯誤:未包含使用的庫和框架朝群。

缺點: 靜態(tài)內(nèi)存分析由于是編譯器根據(jù)代碼進行的判斷, 做出的判斷不一定會準確, 因此如果遇到提示, 應(yīng)該去結(jié)合代碼上文檢查一下

常見的問題如下

一:Localizability issue(Apple)

// 面向用戶的文本應(yīng)該使用本地化的字符串宏

1.user-facing text should use localized string macro

此為代碼中配置了本地化,面向用戶的應(yīng)該用字符串宏,而我們直接賦值為漢字,因此,此提示可以忽略.也可以通過如下修改進行編譯器隱藏

二:Core Foundation/Objective-C

// 這個是提示錯誤

1.Returning ?'self' while it is not set to the result of '[(super or self) init...]'

解決辦法:去除if條件中的一個 = 既可,改為 if (self=[super initWithFrame:frame]) {}

三:Dead store

// 在初始化過程中存儲的“持續(xù)時間值”的值永遠不會被讀取1.Value stored to ‘dateFromString’ during its initialization is never read

這是因為? NSDate *dateFromString=[[NSDate alloc] init];? 初始化分配了內(nèi)存燕耿,而? [dateFormatter dateFromString:dateString]; 方法也相當于初始化分配了內(nèi)存,就是把初始化的一個新的NSDate賦值給之前已經(jīng)初始化過的NSDate姜胖,看似沒什么大問題誉帅,其實存在一個數(shù)據(jù)源卻申請了兩塊內(nèi)存的問題,已經(jīng)造成了內(nèi)存泄露右莱。

修改如下:

// ''中的值永遠不會讀取

2.Value stored to ‘isDefaultDrawLine’ ?is never read

這是因為我這個變量 isDefaultDrawLine 沒有在這個方法中被使用蚜锨,只是對其賦值了, 從我的截圖中可以看出。所以解決方法是去掉這個變量,因為用不著慢蜓。

四:Logic Error

// 下標是一個未初始化的值

1.Subscrpt index is an uninitialized value

如截圖所示,我上面紅色箭頭所指的沒有初始化,自己初始化一個值既可亚再!

//在信息表達的觀點是一個未初始化的值

2.Argument in message expression is an uninitialized value

如圖所示,我這里的 isEquel 就是沒有初始化一個值,自己初始化YES/NO既可。

//未定義或返回垃圾值

3.undefined or garbage value return to caller

如圖所示,將我這里的isSucceed 初始化YES/NO既可晨抡。

五:Memory error

//在返回非空值的方法返回了null

1.null is returned from a method that is expected to return a? non-null value


如圖所示,返回一個UICollectionReusableView對象即可氛悬!

六:API Misuse(Apple)

//字典的鍵可能為空

1.'NSMutableDictionary' ?key cannot be nil

將字典的鍵初始化一個默認值则剃。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市如捅,隨后出現(xiàn)的幾起案子棍现,更是在濱河造成了極大的恐慌,老刑警劉巖镜遣,帶你破解...
    沈念sama閱讀 212,816評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件己肮,死亡現(xiàn)場離奇詭異,居然都是意外死亡悲关,警方通過查閱死者的電腦和手機谎僻,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來寓辱,“玉大人艘绍,你說我怎么就攤上這事⊙冉ⅲ” “怎么了鞍盗?”我有些...
    開封第一講書人閱讀 158,300評論 0 348
  • 文/不壞的土叔 我叫張陵需了,是天一觀的道長跳昼。 經(jīng)常有香客問我,道長肋乍,這世上最難降的妖魔是什么鹅颊? 我笑而不...
    開封第一講書人閱讀 56,780評論 1 285
  • 正文 為了忘掉前任,我火速辦了婚禮墓造,結(jié)果婚禮上堪伍,老公的妹妹穿的比我還像新娘。我一直安慰自己觅闽,他們只是感情好帝雇,可當我...
    茶點故事閱讀 65,890評論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著蛉拙,像睡著了一般尸闸。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上孕锄,一...
    開封第一講書人閱讀 50,084評論 1 291
  • 那天吮廉,我揣著相機與錄音,去河邊找鬼畸肆。 笑死宦芦,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的轴脐。 我是一名探鬼主播调卑,決...
    沈念sama閱讀 39,151評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼抡砂,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了恬涧?” 一聲冷哼從身側(cè)響起舀患,我...
    開封第一講書人閱讀 37,912評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎气破,沒想到半個月后聊浅,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,355評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡现使,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,666評論 2 327
  • 正文 我和宋清朗相戀三年低匙,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片碳锈。...
    茶點故事閱讀 38,809評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡顽冶,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出售碳,到底是詐尸還是另有隱情强重,我是刑警寧澤,帶...
    沈念sama閱讀 34,504評論 4 334
  • 正文 年R本政府宣布贸人,位于F島的核電站间景,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏艺智。R本人自食惡果不足惜倘要,卻給世界環(huán)境...
    茶點故事閱讀 40,150評論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望十拣。 院中可真熱鬧封拧,春花似錦、人聲如沸夭问。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽缰趋。三九已至捧杉,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間埠胖,已是汗流浹背糠溜。 一陣腳步聲響...
    開封第一講書人閱讀 32,121評論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留直撤,地道東北人非竿。 一個月前我還...
    沈念sama閱讀 46,628評論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像谋竖,于是被迫代替她去往敵國和親红柱。 傳聞我的和親對象是個殘疾皇子承匣,可洞房花燭夜當晚...
    茶點故事閱讀 43,724評論 2 351

推薦閱讀更多精彩內(nèi)容