最近幾年,出現了新一代的靜態代碼檢查器。這些新的代碼檢查器能夠根據控制流和數據流分析來發現新型的缺陷。現在,無需實際運行代碼即可檢測到緩沖區溢出,內存泄漏和空指針取消引用等錯誤。由于最近的革命,用于C和C++的靜態代碼分析市場正在迅速變化。現有的代碼檢查器供應商也被迫向其工具中添加數據流和控制流功能。結果,這些工具的潛在用戶很難選擇合適的工具來完成工作。
該調查比較了能夠進行控制流和數據流分析的可用靜態代碼檢查器。這項研究將逐步進行,并在有可用數據時揭示新數據。歡迎提供反饋和客戶體驗,并將其整合到結果中。
將采取以下步驟。首先,選擇工具。之后,將確定包括其稱重在內的要求。最后,將收集所請求的數據。調查的一部分將是建立一個測試套件進行比較。
一、合格工具
1.為了符合條件,必須滿足以下要求:
1)C和/或C++支持
2)無需運行代碼即可檢測控制流和/或數據流缺陷
2.當前合格的工具有:
1).C++test/BugDetective (Parasoft)
2).lang (開放源代碼)
3).CodeSonar (GrammaTech)
4).覆蓋范圍 (Synopsys)
5).CppCheck (開放源代碼)
6).強化 (HP)
7).Klocwork (盜賊之波)
8).olySpace Bugfinder (MathWorks)
二、要求
1.評估以下要求:
1).易于安裝。獲得第一結果需要多長時間?
2).使用方便。了解結果需要花費多少時間?更改配置需要多少時間?是否有抑制個人違規的支持?有用于IDE編程的插件嗎?
3).性能。處理TIOBE測試套件需要多長時間?
4).結果的準確性。在TIOBE測試套件中發現了多少誤報?有多少假陰性?可用規則集是否足夠完整?
5).界面。可以以批處理模式運行嗎?如果是這樣,將數據導出到另一個程序有多容易?
6).價錢。使用哪種定價模型,許可費用是多少?
7).支持。獲得支持需要多長時間?答案的質量如何?
2.C/C++測試套件
3個最常下載的SourceForge開源C/C++項目將用作測試套件。這些是:
1).火狐瀏覽器
2).Apache HTTP服務器
3).MySQL
讓我們知道是否還有其他重要要求。在下一版中,將發布各種工具的“易于安裝”結果。更多相關資訊,請繼續關注中培偉業。