BugDetective

BugDetective 是Parasoft公司旗下產品C++Test白盒測試工具提供的一類新的靜態分析技術,該技術使用了幾種分析技巧,包括模擬應用程式執行路徑,以識別可能觸發運行時缺陷的路徑。檢測到的缺陷包括,使用未初始化的記憶體、引用空指針、除數為零、記憶體和資源泄漏。

BugDetective靜態分析技術簡介

BugDetective 是Parasoft公司旗下產品C++Test白盒測試工具提供的一類新的靜態分析技術,該技術使用了幾種分析技巧,包括模擬應用程式執行路徑,以識別可能觸發運行時缺陷的路徑。檢測到的缺陷包括,使用未初始化的記憶體、引用空指針除數為零、記憶體和資源泄漏。
由於該分析涉及到識別和跟蹤複雜路徑,它會暴露通常可逃避編碼規則靜態分析和單元測試的錯誤,這些錯誤難以通過手動測試或檢查找到。對於那些具有遺留代碼庫和嵌入式代碼(這些情況下,此類錯誤的運行時檢測效果較差或根本不可能)的用戶而言,BugDetective 可在不執行代碼的情況下顯露錯誤的功能,就特別重要。
BugDetective 獨特的靜態分析通過搜尋代碼中的“可疑點”,開始分析正在測試的源碼。可疑點是潛在的錯誤點。這些可疑點在BugDetective 規則中被定義。只要識別了可疑點,BugDetective 就調查導致該可疑點的可能執行路徑,並檢查是否有任何確實違反BugDetective規則的路徑存在。如果找到了這樣的路徑,就報告一個違例。
例如,檢測可能的“除數為零”情形的規則就規定,任何使用了"/" 或"%" 運算符的點都是可疑的。然後它檢查分母中的變數,在導致它為零的任何可能執行路徑的點中,是否能保持零值。如果是的話,則會報告一條錯誤。
對於每個發現的錯誤,分層結構流路徑數據都會詳細準確地列出導致被識別錯誤的完整執行路徑,並以顯現出錯誤的那一代碼行作為結束。為減少每個被發現問題的診斷和糾正所需要的時間和工作量,流路徑詳細信息還會補充擴展注釋(例如,一條關於“避免引用空指針”違例的描述就包含這樣的注釋,描述哪些變數、在流路徑的哪一點包含null 值)。
為使分析過程更靈活、更適合於項目的獨特要求,可以參數化某些規則。因此,BugDetective 甚至可以用來檢測與特定的API 使用相關的違例。

BugDetective的功能

Parasoft的靜態代碼分析技術支持基於數據流以及基於模式的這兩種靜態代碼分析方法。Parasoft的這種基於數據流的靜態代碼分析技術被稱為BugDetective,它能方便地為用戶檢測出跨越多個方法、類或者檔案的運行時問題以及程式不穩定性因素(諸如空指針引用、數組越界、除零、SQL以及其它注入、資源泄漏以等)。
通過在應用程式甚至是相當複雜的應用程式(包含跨越多個方法、類和/或檔案並且含有多個順序調用路徑的程式)中自動追蹤及模擬其路徑,BugDetective能及時發現很多程式中的缺陷,若通過人工測試的方法來查找這些缺陷是相當困難且耗時的,並且若將問題留到程式發布時來修改,往往會耗費巨大的資源。使用Parasoft BugDetective,開發者能在早期發現、診斷並且修復基於模式的靜態代碼分析和/或單元測試所不能檢測到的軟體錯誤。在早期發現這些缺陷能節省軟體開發過程中花在診斷以及可能的重複工作上的大量時間。

相關詞條

相關搜尋

熱門詞條

聯絡我們