【规则分享】C/C++字典空值检查规则 #1191
xiohuang9
announced in
Announcements
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
背景介绍
在C/C++代码中,字典(也称为映射、哈希表或关联数组)是一种常见的数据结构。但是在处理字典时,需要确保正确处理空值(字典中某个键对应的值为空或者不存在的情况),避免代码缺陷。
正常来说,对于 std::map 进行下标索引操作,如果访问的是一个不存在的键(即空值),就会自动创建一个新的键值对,新键的值将使用其数据类型的默认构造函数进行初始化。原则上不是很推荐,但大多数情况下不会影响业务逻辑。但是对于 rapidjson 框架,如果访问空值的话,就会直接抛异常,造成程序崩溃。
规则推荐
使用TCA-Armory-C1进行自研:
规则:DictKeyCheck
代码示例:
rapidjson框架的map对象访问Key之前需要先使用hasMember方法检查Key值是否存在。
如示例所示,如果没有提前检查Key值,若Key值不存在的话,rapidjson框架就会断言失败或者抛异常,导致进程直接退出。

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


联系我们
欢迎访问我们的平台:腾讯云代码分析

使用文档:腾讯云代码分析帮助文档
持续为您的代码助力!
扫描可进开源群畅聊技术&答疑解惑
Beta Was this translation helpful? Give feedback.
All reactions