複製鏈接
請複製以下鏈接發送給好友

BugDetective

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

BugDetective分析技術

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

BugDetective產品功能

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