服务器之家

服务器之家 > 正文

iOS常用调试方法之静态分析详解

时间:2021-05-24 15:33     来源/作者:360技术

前言

在ios项目开发过程中,常用到静态分析(analyze)、断点(breakpoint)和控制台(console)进行代码调试。本篇文章介绍xcode常用调试方法之”静态分析“。

本文来自360奇舞团qishare团队投稿。

一、简介

xcode的静态分析功能是在程序未运行的情况下,对代码的上下文语义、语法、和内存情况进行分析,可以检测出代码潜在的文本本地化问题(localizability issue)、逻辑问题(logic error)、内存问题(memery error)、数据问题(dead store)和语法问题(core foundation/objective-c)等。功能入口在xcode菜单栏

-> product -> analyze(command+shift+b)。图示如下:

iOS常用调试方法之静态分析详解

二、文本本地化问题

当工程target -> build settings -> static analyzer下的missing localizability设置为yes时,使用analyze功能后可以发现一些控件会提示文本本地化问题user-facing text should use localized string macro。图示如下:

iOS常用调试方法之静态分析详解

按照提示,使用nslocalizedstring(<#key#>, <#comment#>)修饰文本即可修复,图示如下:

iOS常用调试方法之静态分析详解

或者,将missing localizability设置为no也可以。图示如下:

iOS常用调试方法之静态分析详解

三、逻辑问题

使用analyze可以分析出来代码中潜在的逻辑问题。比如直接使用nsnumber的对象作为条件时,会得到提示converting a pointer value of type 'nsnumber *' to a primitive boolean value; instead, either compare the pointer to nil or call -boolvalue。图示如下:

iOS常用调试方法之静态分析详解

根据提示,我们有两种修改方式,图示如下:

iOS常用调试方法之静态分析详解

iOS常用调试方法之静态分析详解

虽然这两种修改方式都能解决问题,但不完全一样,要注意其中的差别,选择需要的使用。

四、内存问题

虽然arc帮助开发者管理了大部分的内存问题。但像cgimageref等c系列的代码还需要开发者管理内存。这些内存问题在编译过程中很难发现,但使用analyze可以给出相应的提示。图示如下:

iOS常用调试方法之静态分析详解

上图中有两处和内存相关的提示,开发者可以按照提示进行相应的修改。图示如下:

iOS常用调试方法之静态分析详解

五、数据问题

在编码过程中,一些数据问题可以通过analyze很好的提示出来。比如下图:

iOS常用调试方法之静态分析详解

上图中的string被提示在初始化后从未被用到。是因为第二部的赋值操作为string重新申请了内存。这时,开发者去掉第一步初始化方法即可。图示如下:

iOS常用调试方法之静态分析详解

六、语法问题

在重写类的init方法时,有时会手误写出语法问题,这时可以使用analyze检测出问题。图示如下:

iOS常用调试方法之静态分析详解

根据提示自己检查可以知道是if语句写错了,多了一个=。修改如下:

iOS常用调试方法之静态分析详解

总结

上述几部分内容只是对analyze功能的举例,其实际能检测出的问题会更多。另外,analyze也有自己的局限性,其检查结果也只是辅助开发者查找问题,真正优化代码需要开发者更多的技术经验。

好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对服务器之家的支持。

原文链接:http://zhuanlan.51cto.com/art/201904/594885.htm

相关文章

热门资讯

2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全
2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全 2019-12-26
yue是什么意思 网络流行语yue了是什么梗
yue是什么意思 网络流行语yue了是什么梗 2020-10-11
背刺什么意思 网络词语背刺是什么梗
背刺什么意思 网络词语背刺是什么梗 2020-05-22
苹果12mini价格表官网报价 iPhone12mini全版本价格汇总
苹果12mini价格表官网报价 iPhone12mini全版本价格汇总 2020-11-13
2021德云社封箱演出完整版 2021年德云社封箱演出在线看
2021德云社封箱演出完整版 2021年德云社封箱演出在线看 2021-03-15
返回顶部