前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >【腾讯云代码分析】经典案例分享:空参数

【腾讯云代码分析】经典案例分享:空参数

作者头像
CodeDog
发布2024-10-25 09:34:15
发布2024-10-25 09:34:15
8100
代码可运行
举报
运行总次数:0
代码可运行
官网地址:(点击最下方【阅读原文】可直达)https://tca.tencent.com/

官网介绍:https://cloud.tencent.com/product/tcap 官方开源:https://github.com/Tencent/CodeAnalysis

国内镜像:https://git.code.tencent.com/Tencent_Open_Source/CodeAnalysis

规则介绍

在Objective-C中,有一些方法的参数是不能为空的,比如NSString类的initWithString方法、NSMutableArray类addObject方法等,这些方法通常会在方法声明中明确指出参数不能为空。如果向这些方法的参数传递空指针,程序会在运行时异常,导致程序崩溃。

Clang工具的NilArg规则用于检测Objective-C代码中传递了空指针(nil)作为参数(而该方法的参数不能为空)的情况,提前发现可能引发程序崩溃的代码问题。

NilArg属于编译型工具规则,需要在安装有Xcode、且具备项目编译环境的Mac机器上执行,并且需要在分析方案中配置项目的xcodebuild编译命令。

经典案例

代码案例

案例分析

my_str是从函数外部传递进来的指针,可能为空,而且通过73行的判空操作也能推断出my_str可能为空。NSMutableArray类addObject方法不允许传递空指针作为参数,会导致程序异常。

解决方案

在调用NSMutableArray类addObject方法前,先对参数进行判空,确保不是空指针,才允许传递。

代码语言:javascript
代码运行次数:0
运行
复制
if (my_str != nil) {
    [myArray addObject:my_str];
} else {
    // 处理my_str为nil的情况,例如打印错误信息或者设置一个默认值
    NSLog(@"Error: my_str is nil");
}

规则使用说明

添加规则

进入页面,点击方案->规则配置 -> 添加规则 ->搜索规则名NilArg->选择规则 ->批量添加规则

关注我们,

持续为您的代码助力!

扫描可进开源群畅聊技术&答疑解惑

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-10-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 腾讯云代码分析 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 规则介绍
  • 经典案例
  • 在调用NSMutableArray类addObject方法前,先对参数进行判空,确保不是空指针,才允许传递。
  • 规则使用说明
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档