半岛外围网上直营

自动化测试工具Parasoft如何发现资源泄露问题

原创|使用教程|编辑:张莉|2025-10-14 11:46:02.607|阅读 3 次

概述:在使用Parasoft C/C++test执行BugDetective数据流分析时,可能会遇到用户自定义的资源API,那在这种情况下,若要判断是否存在资源问题,如资源泄露等,则需要手动配置测试配置。

# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>

在使用Parasoft C/C++test执行BugDetective数据流分析时,可能会遇到用户自定义的资源API,那在这种情况下,若要判断是否存在资源问题,如资源泄露等,则需要手动配置测试配置。

>>点击获取Parasoft C/C++test试用

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 为一个分配器:

  • 完全修饰的类型名称或命名空间 : 空
  • 函数名称 : myAlloc
  • + 子类中的定义 : 不勾选
  • “此” 对象是一个资源 : 不勾选
  • 返回一个资源对象 : 勾选
  • 返回值错误的约束 : 空
  • 参数是资源对象的序号 : 空

5). 如下所示指定关闭器:

  • 完全修饰的类型名称或命名空间 : 空
  • 函数名称 : myDealloc
  • + 子类中的定义 : 不勾选
  • “此” 对象是一个资源 : 不勾选
  • 参数是资源对象的序号 : 1

示例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 为一个分配器 :

  • 完全修饰的类型名称或命名空间 : 空
  • 函数名称 : openMyResource
  • + 子类中的定义 : 不勾选
  • “此” 对象是一个资源 : 不勾选
  • 返回一个资源对象 : 不勾选
  • 返回值约束错误 : ==-1
  • 参数是资源对象的序号 : 1

5). 如下所示指定一个关闭器 :

  • 完全修饰的类型名称或命名空间 : 空
  • 函数名称 : closeMyResource
  • + 子类中的定义 : 不勾选
  • “此” 对象是一个资源 : 不勾选
  • 参数是资源对象的序号 : 1


图1 添加用户自定义资源类型

图2 添加用户自定义资源API

在成功配置了Parasoft C/C++test以识别自定义资源API后。无论是直接返回资源的分配函数,还是通过参数传递资源句柄的复杂场景,正确配置后BugDetective都能准确发现潜在的资源泄露问题。Parasoft还提供强大的静态编码规范检查、单元测试与覆盖率分析等功能,全面帮助客户在开发早期发现代码缺陷、强制执行编码标准并验证代码逻辑,从而系统性地提升软件质量、可靠性与安全性,降低项目风险并满足严格的行业合规要求。

关于慧都

慧都是一家行业数字化解决方案公司,专注于软件、石油与工业领域,以深入的业务理解和行业经验,帮助企业实现智能化转型与持续竞争优势。在软件工程领域,我们提供开发控件、研发管理、代码开发、部署运维等软件开发全链路所需的产品,提供正版授权采购、技术选型、个性化维保等服务,帮助客户实现技术合规、降本增效与风险可控。

慧都科技作为Parasoft公司在中国区的官方授权合作伙伴,为国内企业提供Parasoft C/C++test产品的正版授权、定制化部署与全生命周期技术支持与服务。我们致力于助力客户精准贯彻功能安全标准、全面提升软件开发效率、有效管控项目风险,最终构建符合国际标准的高质量软件体系。


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@ke049m.cn


为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP
利记足球官网(官方)网站/网页版登录入口/手机版登录入口-最新版(已更新) 真人boyu·博鱼滚球网(官方)网站/网页版登录入口/手机版登录入口-最新版(已更新) 最大网上PM娱乐城盘口(官方)网站/网页版登录入口/手机版登录入口-最新版(已更新) 正规雷火竞技官方买球(官方)网站/网页版登录入口/手机版登录入口-最新版(已更新) 雷火竞技权威十大网(官方)网站/网页版登录入口/手机版登录入口-最新版(已更新) boyu·博鱼信誉足球官网(官方)网站/网页版登录入口/手机版登录入口-最新版(已更新) 权威188BET足球网(官方)网站/网页版登录入口/手机版登录入口-最新版(已更新) 正规188BET足球大全(官方)网站/网页版登录入口/手机版登录入口-最新版(已更新)