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