Static Code Analysis(静态代码分析)用来发现源代码潜在的错误与缺陷,源代码编译后只有在运行时有可能会产生细微的错误,他们可能难以识别和修复,所以这些潜在的威胁在开发过程中一定要尽可能清理干净,尽量编写的时候注意类似可能潜在的威胁与缺陷。击查看苹果Static Code Analysis官方介绍)

一.可以识别的问题与缺陷

.逻辑缺陷,如访问未初始化的变量和空指针

.内存管理的缺陷,如分配后的内存泄漏

.无效数据(未使用的变量)缺陷

.使用api缺陷,不遵循库或者框架的使用规则

示例:

二,操作

  在Xcode 选项栏里面选择Product -> Analyze (快捷键: command + shift + B) ,点击运行即可。    

三,问题列表

1、Localizability Issue (Apple)

大概意思是:1、这里是非本地化的文字 2、面向用户的文本应使用本地化的字符串宏

别慌,下图是 Xcode检测到缺少本地化~~~ 请看下面解决办法

 
检查文字本地化

解决方法:在 Build Settings 里面找到 Missing Localizability(缺少本地化) 设置为NO,就会忽略这个问题啦,  或者 , 你也可以在应用里面进行本地化。

2、Dead store

无效数据: 意思就是有一些属性或者对象初始化了又没被使用 
问题代码

解决方法:去掉初始化方法,直接赋值

 

注释:另外一种处理方式,使用__unused注释掉

__unused NSMutableArray *array = @[@"1",@"2"];  //使用__unused或者注释掉

3、Logic error 逻辑错误

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作为判断条件的时候,没有指定类型,编译器不知道怎么判断

解决办法:指定 NSNumber 对象与 nil 进行比较

 

4、Memory error 内存错误

nil passed to a callee that requires a non-null 1st parameter(nil传递给需要非null第一个参数的被调用者)

问题代码:param 可能为nil

解决办法:通常这种情况下,只需要添加一个非空判断,保证传入的参数不为空即可

5、Core Foundation/Objective-C

 问题代码
 
1. 假设条件不成立
 
2. 在未设置为'[(超级或自我)初始化...]的结果时返回“自我”

解决办法:

  去掉一个“=” 号,或者把 self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]; 提出来放 if 条件前面

instrument之Xcode Analyze 代码静态检查及问题解决的更多相关文章

  1. Android(Java)利用findbugs进行代码静态检查

    主要介绍利用java静态代码检查工具findbugs进行代码检查,包括其作用.安装.使用.高级功能(远程review和bug同步). 虽然Android提供了Test Project工程以及instr ...

  2. 四种java代码静态检查工具

    [转载]常用 Java 静态代码分析工具的分析与比较 转载自 开源中国社区 http://www.oschina.net/question/129540_23043       1月16日厦门 OSC ...

  3. 代码静态检查Eclipse插件:SonarLint插件离线安装

    Eclipse Version: Oxygen.3a Release (4.7.3a)Myeclipse版本: 10.7 SonarLint 插件离线安装包:org.sonarlint.eclipse ...

  4. C/C++代码静态检查工具Cppcheck在VS2008开发环境中的安装配置和使用

    Cppcheck is an analysis tool for C/C++code. Unlike C/C++ compilers and many other analysis tools, it ...

  5. pylint代码静态检查

    使用git-pylint-commit-hook工具 pre-commit脚本 配置文件放在仓库根目录/hooks下面 git-pylint-commit-hook --limit=9.0 --pyl ...

  6. JAVA代码静态检测之PMD

    今天再次想启动Java代码静态检测工具的利用问题,主要再次尝试用了PMD,发现不少代码编码规范问题和好的代码建议,并学到不少自己之前没有注意到的Java方便的基础知识,感觉很不错,把相关明白的好的规则 ...

  7. React Native工程中TSLint静态检查工具的探索之路

    建立的代码规范没人遵守,项目中遍地风格迥异的代码,你会不会抓狂? 通过测试用例的程序还会出现Bug,而原因仅仅是自己犯下的低级错误,你会不会抓狂? 某种代码写法存在问题导致崩溃时,只能全工程检查代码, ...

  8. QtCreator 可以通过 Clang-Tidy 和 CLazy 对你的代码进行静态检查

    QtCreator 可以通过 Clang-Tidy 和 CLazy 对你的代码进行静态检查 打开你的工程,点击Analyze -> Clang-Tidy and CLazy 选择你想分析的 cp ...

  9. maven配置checkstyle插件对代码规范进行静态检查

    checkstyle配置的官方网站:http://checkstyle.sourceforge.net/config.html (1)新建maven项目,配置checkstyle插件 pom.xml ...

随机推荐

  1. Visual Studio Code(VSCODE)语言设置

    Visual Studio Code(VSCODE)语言设置 语言设置 1.快捷键 Windows.Linux 快捷键是:ctrl+shift+p macOS 快捷键是:command + shift ...

  2. Lua中的类型与值

    [基础介绍] Lua是一种动态类型的语言.在语言中没有类型定义的语法,每个值都带有其自身的类型信息.在Lua中有8中基本类型,分别是: nil(空)类型 boolean(布尔)类型 number(数字 ...

  3. eclipse格式化代码快捷键失效

    原因是与搜狗输入法的“简繁切换”快捷键冲突(取消搜狗输入法的简繁切换快捷键,即可解决)

  4. 库数据有则修改,无则新增sql

    方法一:insert中on duplicate key update的使用 例如: <insert id="bindPlaceInfo"> insert into gr ...

  5. Linux系统备份还原工具1(DD)

    注意:只要时运行备份,建议都使用Ubuntu的Live CD功能启动来操作(即启动盘下的试用Ubuntu而不安装的功能),因为这样可以减少资源占用造成的备份不完整. 说明: 1.使用DD进行硬盘备份可 ...

  6. Android读写properties配置文件

    写这篇文章之前可以成功运行,文章后就各种找不到文件.所以并没有采用此种方式,后期完善.详见下篇解决方案. 配置文件读取很容易,修改需要注意权限,比如assets目录下就不允许修改. 配置文件的创建: ...

  7. 如何在Python脚本中调用外部命令(就像在linux shell或Windows命令提示符下输入一样)

    如何在Python脚本中调用外部命令(就像在linux shell或Windows命令提示符下输入一样) python标准库中的subprocess可以解决这个问题. from subprocess ...

  8. python 用xlwt包把数据导出到excel表中

    def write_excel(): f = xlwt.Workbook() #创建工作簿 ''' 创建第一个sheet: sheet1 ''' sheet1 = f.add_sheet(u'shee ...

  9. Ubuntu文件写入内容时出现错误 E121:无法打开并写入文件解决方案

    在安装某些软件过程中会让你新建个txt或者在输入vim /etc/profile命令时,输入完毕后保存文件时就会报错 E121:无法打开并写入文件解决方案,一般的解决状况就是输入如下命令: :w !s ...

  10. Android 常见问题解决

    1.Android 启动Activity后阻止EditText自动获取焦点 在EditText中添加如下属性即可 <LinearLayout android:focusable="tr ...