Static Code Analysis(靜態代碼分析)用來發現源代碼潛在的錯誤與缺陷,源代碼編譯後只有在運行時有可能會產生細微的錯誤,他們可能難以識別和修復,因此這些潛在的威脅在開發過程當中必定要儘量清理乾淨,儘可能編寫的時候注意相似可能潛在的威脅與缺陷。擊查看蘋果Static Code Analysis官方介紹)html
1.邏輯缺陷,如訪問未初始化的變量和空指針 2.內存管理的缺陷,如分配後的內存泄漏 3.無效數據(未使用的變量)缺陷 4.使用api缺陷,不遵循庫或者框架的使用規則
示例:ios
別慌,下圖是 Xcode檢測到缺乏本地化~~~ 請看下面解決辦法api
解決方法:在 Build Settings 裏面找到 Missing Localizability(缺乏本地化) 設置爲NO,就會忽略這個問題啦, 或者 , 你也能夠在應用裏面進行本地化。xcode
無效數據: 意思就是有一些屬性或者對象初始化了又沒被使用
解決方法:去掉初始化方法,直接賦值app
註釋:另一種處理方式,使用__unused註釋掉框架
__unused NSMutableArray *array = @[@"1",@"2"]; //使用__unused或者註釋掉
Converting a pointer value of type 'NSNumber *' to a primitive boolean value;instead,either compare the pointer to nil or call -boolValue(將類型爲「NSNumber *」的指針值轉換爲原始布爾值; 相反,要麼將指針與nil進行比較,要麼調用-boolValue)
問題代碼:使用NSNumber做爲判斷條件的時候,沒有指定類型,編譯器不知道怎麼判斷ui
解決辦法:指定 NSNumber 對象與 nil 進行比較spa
nil passed to a callee that requires a non-null 1st parameter(nil傳遞給須要非null第一個參數的被調用者)
問題代碼:param 可能爲nil 指針
解決辦法:一般這種狀況下,只須要添加一個非空判斷,保證傳入的參數不爲空便可code
去掉一個「=」 號,或者把 self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]; 提出來放 if 條件前面