admin管理员组文章数量:1794759
【规则分享】C/C++字典空值检查规则
官网地址:/ 官网介绍: 官方开源:
国内镜像:
背景介绍
▼
在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 删除c++镜像框架索引异常本文标签: 规则分享CC字典空值检查规则
版权声明:本文标题:【规则分享】CC++字典空值检查规则 内容由林淑君副主任自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.xiehuijuan.com/baike/1754707352a1705458.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论