• 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/

  • 相关阅读:
    删除commit(暂存区)中的文件(git)
    bower安装使用以及git安装
    compass模块----Utilities----Sprites精灵图合图
    compass模块----Utilities
    compass模块----Helpers
    compass模块
    compass安装
    Sass@规则
    Sass函数--颜色函数--Opacity函数
    Sass函数--颜色函数--HSL函数
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/5172950.html
Copyright © 2020-2023  润新知