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