產品概述
CodeSonar是軟件靜態缺陷檢查和安全性分析工具,幫助團隊快速分析和驗證代碼,識別導致系統故障、可靠性差、系統漏洞或不安全條件的嚴重漏洞或錯誤。通過在并發性分析、污染數據流分析和全面檢測等技術上的創新,CodeSonar比其他同類型工具發現更為重要的缺陷。
功能特性
l先進的靜態分析算法
CodeSonar執行統一的數據流和符號分析,檢查整個程序的運算。該方法不依賴于模式匹配或類似的近似。CodeSonar通過更為深入的分析自然而然地發現新的或不尋常的缺陷。
圖1查看缺陷的每條路徑追蹤
l分析數百萬行代碼
CodeSonar可以執行千萬行代碼的全程序分析。一旦完成了起初的基線分析,CodeSonar的增量分析能力快速分析代碼庫的每日變化。分析能并發運行,充分利用多核環境的優勢。
l支持編程標準
CodeSonar支持編程標準,如MISRA C:2012、IS0-26262、US-CERT以及CWE等。
l軟件架構的可視化
可視化代碼揭示和理解代碼之間的關系。Visual Taint Analysis允許用戶快速發現具有潛在危險信息流的來源。
圖2 可視化軟件架構理解代碼
l查看質量趨勢
圖表顯示數據,幫助用戶管理開發和測試的工作。
圖3 通過比較分析查看質量的趨勢,發現引入的缺陷類型
l定制分析
提供C API,易于創建新的檢查。很多內置的檢查也可以根據本地需求進行配置。CodeSonar本身可以計算N種不同的代碼度量,也可以使用API來定義自己的度量。
l檢查項示例
緩沖區溢出
未初始化變量
釋放非堆變量
釋放后再使用
雙重釋放/關閉
格式化字符串漏洞
返回局部變量指針
數據競爭
死鎖
空指針間接引用
雙重關閉
被零除
危險函數轉換
資源泄漏
l支持的語言
C
C++
JAVA/C#(需額外組件)
典型應用
CodeSonar關注的是那些“真正能夠引發問題”的軟件缺陷,因此被廣泛使用在安全關鍵和任務關鍵的系統,比如汽車電子、航空航天。由于算法的科學性和先進性,往往能檢測到其它靜態工具可能遺漏的問題所在。例如,對某開源代碼的檢測,如下隱藏在特定路徑里的“條件表達式永遠為TRUE”的案例,CodeSonar給出了較其它靜態分析工具更為準確的表現:
圖4 條件表達式永遠為TRUE的示例,隱藏在switch-case路徑中
觀察102行,t1v_type == -1如果為真,頂層的while循環將退出;在switch語句中,164行,t1v_type == -1則不可能為真。CodeSonar指出這里是一個“copy-paste錯誤”,此檢查比較“智能”,它認為此處的t1v_type應該是中間復制變量sub_t1v_type,這兩個變量在錯誤的路徑中都已高亮顯示。