成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Xcode執行靜態代碼分析

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

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

靜態分析的主要目的:

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

靜態分析錯誤提示分類:

Xocde的靜態代碼分析工具會接卸項目的源代碼,并以以下集中錯誤類型加以標識:

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

第一次在項目中執行靜態分析時,可能會發現許多錯誤。但經常性的執行靜態分析并修復發現的代碼缺陷,之后的遇到的錯誤會越來越少。這對于編寫強壯的代碼是很有幫助的。

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

靜態代碼分析的使用舉例:

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

  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,

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


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

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



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

設置工程自動進行靜態分析

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

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

注:描述于IOS5.1下

責任編輯:閆佳明 來源: oschina
相關推薦

2021-06-08 13:56:34

工具靜態代碼

2023-02-08 18:08:16

2013-04-08 10:27:59

iOSXcode制作靜態庫

2022-06-29 09:19:09

靜態代碼C語言c代碼

2011-08-18 10:47:48

Xcode 4靜態庫

2012-04-25 11:04:13

Visual Stud

2022-01-19 08:00:00

靜態代碼動態代碼開發

2011-08-02 14:15:05

XCode 靜態 鏈接庫

2012-05-22 00:28:21

JavaJava開源開源工具

2017-05-10 14:27:29

靜態代碼漏洞安全

2021-05-06 09:00:00

JavaScript靜態代碼開發

2020-10-08 13:44:27

漏洞

2017-08-22 13:45:27

2021-11-04 05:43:38

GoKartGo代碼靜態安全分析

2021-01-05 09:25:27

DockerSemgrep代碼靜態分析工具

2014-08-27 16:22:19

2024-01-08 13:47:00

代碼分析工具

2011-05-05 09:54:05

靜態代碼

2023-09-14 22:57:52

2015-09-18 22:11:33

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 999久久久久久久久6666 | 欧美一级片在线看 | 久久精品国产亚洲一区二区 | 日本成人中文字幕在线观看 | 亚洲一区在线日韩在线深爱 | 欧美一极视频 | 日韩在线精品视频 | 人人干免费 | 午夜不卡福利视频 | 精品中文字幕一区二区 | 成人一区二区三区在线观看 | 亚洲精选久久 | 蜜桃传媒一区二区 | 日韩一级免费观看 | 看亚洲a级一级毛片 | 国产一区二区精品自拍 | 日本欧美国产 | 日本免费一区二区三区 | 九九精品久久久 | 国产一区二区精华 | av一级久久 | 久久精品一区二区三区四区 | 一区| 国产区在线视频 | 久久久久久久99 | 久久激情网 | 国产偷录视频叫床高潮对白 | 欧美日韩国产精品激情在线播放 | 国产精品永久在线观看 | 午夜在线视频 | 中文字幕视频在线观看 | 亚洲一区二区在线免费观看 | 亚洲视频在线看 | 九九爱这里只有精品 | 不卡一区二区三区四区 | 欧美成年网站 | 国产91精品网站 | 日韩欧美中文字幕在线观看 | 免费精品久久久久久中文字幕 | 亚洲精品在线91 | 日韩av一区二区在线观看 |