首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【规则分享】C/C++字典空值检查规则

【规则分享】C/C++字典空值检查规则

作者头像
CodeDog
发布2024-10-21 09:37:34
发布2024-10-21 09:37:34
32700
代码可运行
举报
运行总次数: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

背景介绍

在C/C++代码中,字典(也称为映射、哈希表或关联数组)是一种常见的数据结构。但是在处理字典时,需要确保正确处理空值(字典中某个键对应的值为空或者不存在的情况),避免代码缺陷。

正常来说,对于 std::map 进行下标索引操作,如果访问的是一个不存在的键(即空值),就会自动创建一个新的键值对,新键的值将使用其数据类型的默认构造函数进行初始化。原则上不是很推荐,但大多数情况下不会影响业务逻辑。但是对于 rapidjson 框架,如果访问空值的话,就会直接抛异常,造成程序崩溃。

推荐规则

使用TCA-Armory-C1进行自研:

规则:DictKeyCheck

代码示例:

rapidjson框架的map对象访问Key之前需要先使用hasMember方法检查Key值是否存在。

代码语言:javascript
代码运行次数:0
运行
复制
using namespace rapidjson;

void test() {
    const rapidjson::Value doc;
    // 未检查
    doSomething(doc["foo"]);
}

如示例所示,如果没有提前检查Key值,若Key值不存在的话,rapidjson框架就会断言失败或者抛异常,导致进程直接退出。

规则使用说明

进入页面,点击方案->规则配置 -> 自定义规则包-> 添加规则 ->搜索规则名DictKeyCheck->选择需要添加的规则 ->批量添加规则


关注我们,持续为您的代码助力!

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景介绍
  • 推荐规则
  • 规则使用说明
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档