自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Xcode執(zhí)行靜態(tài)代碼分析

移動開發(fā) iOS
在項目的開發(fā)之中,每個開發(fā)者最激動最高興看到的是自己編寫的代碼,不用太多的調(diào)試就可以暢通無阻的運行,無任何bug侵襲。但這只是個理想的狀態(tài),看起來運行良好的代碼往往都會存在潛在位置的bug,這是每位開發(fā)者最頭痛的事,也是每位開發(fā)者都想極力避免的事情。所以如果手頭用到的IDE能夠比較給力的話,那么我們就可以避免程序中許多的bug。Xcode作為一款強大的Objective-C的IDE,其內(nèi)置提供了很多開發(fā)工具來輔助開發(fā)者的日常開發(fā)工作,最大限度的降低開發(fā)難度,本篇簡單介紹下Xcode中的靜態(tài)代碼分析功能。

在項目的開發(fā)之中,每個開發(fā)者最激動最高興看到的是自己編寫的代碼,不用太多的調(diào)試就可以暢通無阻的運行,無任何bug侵襲。但這只是個理想的狀態(tài),看起 來運行良好的代碼往往都會存在潛在位置的bug,這是每位開發(fā)者最頭痛的事,也是每位開發(fā)者都想極力避免的事情。所以如果手頭用到的IDE能夠比較給力的 話,那么我們就可以避免程序中許多的bug。Xcode作為一款強大的Objective-C的IDE,其內(nèi)置提供了很多開發(fā)工具來輔助開發(fā)者的日常開發(fā) 工作,最大限度的降低開發(fā)難度,本篇簡單介紹下Xcode中的靜態(tài)代碼分析功能。

靜態(tài)分析的主要目的:

代碼中的bug往往是由于開發(fā)者忽略一些代碼缺陷而造成的,這些代碼缺陷可能是極其微小的錯誤,以至于在程序的編譯期并未給出很好的錯誤, 從而導(dǎo)致這些代碼缺陷在程序的運行期以某種非正常形式呈現(xiàn)出來。那么對于開發(fā)這開說,這些微小的代碼缺陷,往往是很難跟蹤調(diào)試的,因此也為修復(fù)代碼帶來了 很大困難。Xcode靜態(tài)代碼分析的作用即發(fā)現(xiàn)項目源代碼中的某些代碼缺陷,并分類進行提示,以方便開發(fā)者及時關(guān)注并加以修改,從而把代碼缺陷(潛在的 bug)及時清除。

靜態(tài)分析錯誤提示分類:

Xocde的靜態(tài)代碼分析工具會接卸項目的源代碼,并以以下集中錯誤類型加以標(biāo)識:

  • 邏輯缺陷,例如訪問未初始化的變量或空指針的解引用
  • 內(nèi)存管理缺陷,如內(nèi)存泄露
  • 無用存儲缺陷(永不會被訪問的變量)
  • 因未遵從項目用到的框架(frameworks)或類庫(libraries)所規(guī)范而導(dǎo)致的API使用缺陷 

第一次在項目中執(zhí)行靜態(tài)分析時,可能會發(fā)現(xiàn)許多錯誤。但經(jīng)常性的執(zhí)行靜態(tài)分析并修復(fù)發(fā)現(xiàn)的代碼缺陷,之后的遇到的錯誤會越來越少。這對于編寫強壯的代碼是很有幫助的。

但要注意的是,靜態(tài)分析未報告錯誤,并不意味者程序沒有錯誤。靜態(tài)分析工具并不是萬能的,不會檢測到源代碼中的所有錯誤。

靜態(tài)代碼分析的使用舉例:

以新建StaticCodeAnalysisDemo功能為例。新建MJIssueViewController測試文件,并編寫兩個會提示靜態(tài)分析錯誤的測試方法,代碼如下:

  1. // Dead store 
  2.     - (void)issueCodeBlockA 
  3.     { 
  4.         CGRect frame = CGRectMake(0.0, 0.0, 100, 100); 
  5.     } 
  6.       
  7.     // Memory , Potential leak of an object 
  8.     - (CGGradientRef)issueCodeBlockB 
  9.     { 
  10.         CGGradientRef gradient ; 
  11.         CGColorSpaceRef colorSapce = CGColorSpaceCreateDeviceRGB() ; 
  12.         CGFloat components[16] = { 
  13.             211/255.0 , 101/255.0 , 98/255.0 , 1.0 , 
  14.             215/255.0 , 54/255.0 , 45/255.0 , 1.0 , 
  15.             193/255.0 , 19/255.0 , 0 , 1.0 
  16.         } ; 
  17.         CGFloat locations[] = {0.0 , 0.5 , 1.0 } ; 
  18.         int locationNum = 3  ; 
  19.         gradient = CGGradientCreateWithColorComponents(colorSapce, components, locations, locationNum); 
  20.         return gradient ; 
  21.     } 

長按Xcode左上角的Run按鈕中,在彈出的下拉列表選擇Analyze,之后工程會進行自動進行build,

在成功后,在左側(cè)欄的Issue Navigation一欄中,我們可以看到Xcode靜態(tài)分析工具為我們展示的一些錯誤提示。如下圖:


此處包含了Dead Store和Memory錯誤提示,Dead Store提示了在方法中不會被使用的變量frame ;Memory提示了潛在內(nèi)存泄露錯誤(gradient變量未調(diào)用CGGradientRelease函數(shù)進行釋放)。

接著,點擊左側(cè)錯誤導(dǎo)航中的提示之一,我們看到Xcode以一種圖形化的導(dǎo)向方式為我們指定錯誤發(fā)生的流轉(zhuǎn)方式,第一次看覺得還是比較炫的。



這樣,按照靜態(tài)分析工具的錯誤提示指引,我們可以預(yù)先發(fā)現(xiàn)那些代碼缺陷,及時進行修復(fù),這樣代碼發(fā)生錯誤的概率將明顯減少。

設(shè)置工程自動進行靜態(tài)分析

選中工程文件,在TARGETS的Build Settings選項中的搜索欄中搜索關(guān)鍵字,Run Static Analyzer,在結(jié)果中,Build Options下會顯示Run Static Analyzer選項設(shè)置,雙擊該選項并在彈出窗口中將NO改為YES,

那么在下次工程直接運行時會自動進行代碼靜態(tài)分析,并給出錯誤提示。

注:描述于IOS5.1下

責(zé)任編輯:閆佳明 來源: oschina
相關(guān)推薦

2021-06-08 13:56:34

工具靜態(tài)代碼

2023-02-08 18:08:16

2013-04-08 10:27:59

iOSXcode制作靜態(tài)庫

2022-06-29 09:19:09

靜態(tài)代碼C語言c代碼

2011-08-18 10:47:48

Xcode 4靜態(tài)庫

2022-01-19 08:00:00

靜態(tài)代碼動態(tài)代碼開發(fā)

2012-04-25 11:04:13

Visual Stud

2011-08-02 14:15:05

XCode 靜態(tài) 鏈接庫

2017-05-10 14:27:29

靜態(tài)代碼漏洞安全

2012-05-22 00:28:21

JavaJava開源開源工具

2021-05-06 09:00:00

JavaScript靜態(tài)代碼開發(fā)

2020-10-08 13:44:27

漏洞

2017-08-22 13:45:27

2014-08-27 16:22:19

2021-11-04 05:43:38

GoKartGo代碼靜態(tài)安全分析

2021-01-05 09:25:27

DockerSemgrep代碼靜態(tài)分析工具

2024-01-08 13:47:00

代碼分析工具

2011-05-05 09:54:05

靜態(tài)代碼

2023-09-14 22:57:52

2015-06-18 10:49:31

點贊
收藏

51CTO技術(shù)棧公眾號