没有找到合适的产品?
联系客服协助选型:023-68661681
提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
原创|使用教程|编辑:张莉|2025-10-14 11:46:02.607|阅读 3 次
概述:在使用Parasoft C/C++test执行BugDetective数据流分析时,可能会遇到用户自定义的资源API,那在这种情况下,若要判断是否存在资源问题,如资源泄露等,则需要手动配置测试配置。
# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>
在使用Parasoft C/C++test执行BugDetective数据流分析时,可能会遇到用户自定义的资源API,那在这种情况下,若要判断是否存在资源问题,如资源泄露等,则需要手动配置测试配置。
1、打开测试配置对话框
在打开的C++test窗口中,点击菜单“Parasoft”-> “测试配置”
2、复制BD测试配置
右键“内建”-》“BugDetective Fast”,选择“拷贝”到“用户自定义”
3、修改BD的资源选项卡
示例1
下面的代码即为用户自定义的资源API:
void myAlloc(void) ---- 申请内存函数 void myDealloc(void) ---- 释放函数 / returns NULL on allocation failure / void myAlloc(void); void myDealloc(void); static void createMyResource_Leak() { void resource = myAlloc(); } / 'res' is not closed on the path where it is not NULL / static void createMyResource_NoLeak() { void resource = myAlloc(); if (!resource) { return; / no leak here, if res is NULL, it means allocation failed / } / use the resource / myDealloc(resource); }
我们希望定义分配 / 关闭资源的方法,因此 BugDetective 可以用来找到这个非标准资源的泄露。要做到这一点, 我们需要执行以下步骤:
1). 在资源选项卡中, 单击 添加 (Add) 并定义新资源的名称。 此名称将会用于报告与此资源相关的违规。
2). 禁用 Do not report violations at application termination 选项。
3). 单击 编辑 (Edit) 来指定此资源是如何操作的。
4). 如下所示定义 myAlloc 为一个分配器:
5). 如下所示指定关闭器:
示例2
现在让我们考虑一个不同的例子。在这里,资源开放函数接收一个指向资源句柄的指针作为一个参数并初始化该句柄最新分配的资源。如果分配失败,返回错误代码为 -1。
int openMyResource(int* pHandle); void closeMyResource(int handle); static void openMyResource_Leak() { int handle; openMyResource(&handle); } // 'res' is not closed static void openMyResource_NoLeak() { int handle; int status = openMyResource(&handle); if (status == -1) { return; // no leak here, status == -1 indicates allocation failure } // use the resource closeMyResource(handle); }
现在让我我执行以下操作在 BugDetective 中添加支持这种资源类型 :
1). 在"资源"选项卡,单击 添加(Add) 并定义新资源的名称。 此名称将用于报告与此资源相关的违规。
2). 禁用 Do not report violations at application termination 选项。
3). 单击 编辑 (Edit) 来指定如何操纵这种资源。
4). 如下所示定义 openMyResource 为一个分配器 :
5). 如下所示指定一个关闭器 :
图1 添加用户自定义资源类型
图2 添加用户自定义资源API
在成功配置了Parasoft C/C++test以识别自定义资源API后。无论是直接返回资源的分配函数,还是通过参数传递资源句柄的复杂场景,正确配置后BugDetective都能准确发现潜在的资源泄露问题。Parasoft还提供强大的静态编码规范检查、单元测试与覆盖率分析等功能,全面帮助客户在开发早期发现代码缺陷、强制执行编码标准并验证代码逻辑,从而系统性地提升软件质量、可靠性与安全性,降低项目风险并满足严格的行业合规要求。
关于慧都
慧都是一家行业数字化解决方案公司,专注于软件、石油与工业领域,以深入的业务理解和行业经验,帮助企业实现智能化转型与持续竞争优势。在软件工程领域,我们提供开发控件、研发管理、代码开发、部署运维等软件开发全链路所需的产品,提供正版授权采购、技术选型、个性化维保等服务,帮助客户实现技术合规、降本增效与风险可控。
慧都科技作为Parasoft公司在中国区的官方授权合作伙伴,为国内企业提供Parasoft C/C++test产品的正版授权、定制化部署与全生命周期技术支持与服务。我们致力于助力客户精准贯彻功能安全标准、全面提升软件开发效率、有效管控项目风险,最终构建符合国际标准的高质量软件体系。
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@ke049m.cn
大型SaaS系统的自动化测试常常受制于界面变化快、结构复杂、加载机制多变等因素。从元素识别到脚本管理,SmartBear TestComplete帮助Salesforce建了可靠的自动化测试体系。
BarTender 标签管理系统,正是帮助企业轻松实现 GS1 标准化标签设计、编码生成与信息联动的强大工具。
Parasoft C/C++test 是一款功能强大的 C/C++ 软件测试工具,集成了静态代码分析、单元测试、集成测试和覆盖率分析等功能,单元测试作为其关键功能之一,为了适配多样化的目标部署环境,C/C++test 设计了灵活的测试结果收集机制。通过Socket通讯方式来收集单元测试结果,从而扩展其测试覆盖范围与应用场景。
Parasoft C/C++test作为一款功能全面的自动化代码质量保障工具,为C/C++开发者提供了静态分析、单元测试和运行时错误检测等核心功能。通过将其与轻量级且广受欢迎的VScode编辑器集成,开发团队可以在熟悉的编码环境中实时获得代码质量反馈,有效提升开发效率与代码可靠性。
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@ke049m.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢