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