原創|使用教程|編輯:張莉|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