iOS XCode啟用/關閉Clang Warnings


原創Blog。轉載請注明出處
blog.csdn.net/hello_hwc
歡迎關注我的iOS SDK具體解釋專欄,這里有非常多基礎的文章。
http://blog.csdn.net/column/details/huangwenchen-ios-sdk.html


前言:warnings是編碼中非常重要的一個環節,編譯器給出合理的warning能幫助開發人員找到自己代碼的問題,防止非常多bug產生。
默認用XCode創建一個project,會自己主動開啟一些重要的warnings。可是很多其它的時候,我們須要編譯器更完整的提醒。

iOS開發採用Clang編譯器。


默認的Warning能夠在Build Settings里找到

在search里搜索Warnings,就能夠看到如圖,這是為全部語言開啟的warnings

當然。也能夠為不同語言開啟warning,也在Build Settings里

可是。這樣一個個的開啟關閉定制化非常好。有時候我們僅僅須要開啟全部或者開啟全部重要的warnings就可以
這時候,進入
這里寫圖片描寫敘述
能夠加入一些build flag來啟用警告。基本的就是三個

1.-Wall Clang覺得自己能夠准確報出的警告
2. -Wextra額外的苛刻的警告。這些警告不一定會造成錯誤。比如假設使用這個flag,把singned 賦值給unsigned就會觸發警告,而大多數時候這樣賦值是沒問題的。


3.-Weverything 全部警告

一般的項目都是開啟-Wall-Wextra兩個警告來保證沒有嚴重錯誤。當然。假設有些明顯的不會出錯。能夠用關閉某個或者某些警告。

-Wall -Wno-unused-variable //啟用Wall可是剔除unused-variable

用語句強制開啟或者關閉某個警告

強制開啟一個警告

#warning "This method can not be used"

強制開啟一個錯誤

#error "You must add this key,or you will fail"

這里寫圖片描寫敘述

強制關閉一個警告
比如
這里會出現警告test這個selector沒有實現

[self performSelector:@selector(test) withObject:nil];

強制關閉這個警告

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wundeclared-selector"
    [self performSelector:@selector(test) withObject:nil];
#pragma clang diagnostic pop

經常使用的CLang Warning

  • Wall
  • Wbad-function-cast
  • Wcast-align
  • Wconversion
  • Wdeclaration-after-statement
  • Wdeprecated-implementations
  • Wextra
  • Wfloat-equal
  • Wformat=2
  • Wformat-nonliteral
  • Wfour-char-constants
  • Wimplicit-atomic-properties
  • Wmissing-braces
  • Wmissing-declarations
  • Wmissing-field-initializers
  • Wmissing-format-attribute
  • Wmissing-noreturn
  • Wmissing-prototypes
  • Wnested-externs
  • Wnewline-eof
  • Wold-style-definition
  • Woverlength-strings
  • Wparentheses
  • Wpointer-arith
  • Wredundant-decls
  • Wreturn-type
  • Wsequence-point
  • Wshadow
  • Wshorten-64-to-32
  • Wsign-compare
  • Wsign-conversion
  • Wstrict-prototypes
  • Wstrict-selector-match
  • Wswitch
  • Wswitch-default
  • Wswitch-enum
  • Wundeclared-selector
  • Wuninitialized
  • Wunknown-pragmas
  • Wunreachable-code
  • Wunused-function
  • Wunused-label
  • Wunused-parameter
  • Wunused-value
  • Wunused-variable
  • Wwrite-strings

困難模式

所謂的困難模式就是開啟全部警告。而且把警告當作error。這意味着,僅僅要另一個警告存在,那么程序將不能編譯執行。
這里寫圖片描寫敘述


參考鏈接
http://onevcat.com/2013/05/talk-about-warning/
http://programmers.stackexchange.com/questions/122608/clang-warning-flags-for-objective-c-development
http://amattn.com/p/better_apps_clang_weverything_or_wall_is_a_lie.html
http://nshipster.cn/clang-diagnostics/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM