C程序靜態(tài)分析工具Canalyze國產(chǎn)替代軟件
1.需求及背景
軟件測試與分析是發(fā)現(xiàn)軟件缺陷、提高軟件質(zhì)量的重要措施。動態(tài)測試是保障軟質(zhì)量的傳統(tǒng)手段。不過,它依賴于測試用例的質(zhì)量。如何設(shè)計一組比
較少的試用例,給出合適的輸入數(shù)據(jù),達(dá)到比較高的覆蓋率,是一個具有挑戰(zhàn)性的題。即使達(dá)到了高覆蓋率,也不一定能發(fā)現(xiàn)軟件中潛在的缺陷。
程態(tài)分析是近年來日益受到重視的一類技術(shù)。它通過掃描、分析源程序或中間碼,以檢軟件中各種難以發(fā)現(xiàn)的缺陷。它不需要運行被測軟件,就能生一些錯誤報,幫助開發(fā)人員、測試人員準(zhǔn)確地找出軟件中的bugs.
2.主要功與特點國產(chǎn)C程序靜態(tài)分析工具軟件
Canalyze是一個程序靜態(tài)分析工具輸入是C程序。該工具可以檢測輸入程序中的各種缺陷,包括:變量未義使用、空指針引用、內(nèi)存泄漏等錯 誤類型。它對輸入程序分析后,生成有良好可讀的網(wǎng)頁形式的錯誤報告。
該工具的主要特點包括:
?使用了一種新穎的內(nèi)模型和跨過程的函數(shù)方法來完成路徑敏感和上下文敏感的分析。
?使用了一種表達(dá)能力更強(qiáng)的跨過程符示形式——符號存取表達(dá)式,作為跨過程分析的基礎(chǔ)。
?利用一個約束求解工具對路徑條進(jìn)行求解,以比較高的路徑覆蓋率分析程序。
?可生成用戶友好的錯誤報告,以便程序員定位、排除測到的缺陷。
作為靜態(tài)分析工具,Canalyze在使用時,不需要運行檢測程序。而且,其自動化程度很高。它能在很短的時間內(nèi)分析幾十萬行C代碼。
使用Canalyze可以在一臺普通的計算機(jī)或服務(wù)器上完成對指定項目代碼的掃描,檢測其中隱藏的缺陷。
常見的應(yīng)用場景包括:國產(chǎn)C程序靜態(tài)分析工具軟件
-開發(fā)人員在完成開發(fā)后,掃描指定文件或函數(shù)的變更代碼,從而盡快發(fā)現(xiàn) 新開發(fā)代碼中可能包含的缺陷。
-代碼托管服務(wù)器在代碼更新之后,進(jìn)行針對工程的增量或全量掃描,從而 確保代碼更新之后質(zhì)量。
-測試人員和質(zhì)量工程人員在測試工程時掃描代碼,從而依據(jù)可能存在的缺 陷構(gòu)造額外的測試用例。
Canalyze提供了針對函數(shù)和文件的部分代碼掃描功能。部分掃描是指,它在一次掃描中僅讀取需要分析的部分代碼進(jìn)行分析。分析過程中,如果調(diào)用了
未被包含的函數(shù)時則自動跳過該函數(shù)調(diào)用。通過部分代碼掃描,開發(fā)人員可以快速完成針對新開發(fā)的代碼和函數(shù)的快速掃描,從而簡單地完成一次不**的
代碼檢測,發(fā)現(xiàn)一些在變更代碼中引入的一些簡單的代碼缺陷,進(jìn)而避免將包含潛在缺陷的代碼提交到代碼倉庫中。
Canalyze提供了針對于工程的增量或全量掃描功能。開發(fā)人員可以通過配置將Canze添加到持續(xù)集成系統(tǒng)中,從而實現(xiàn)在代碼提交之后自動觸發(fā)一次
增量或量掃描。增量掃描功能是指Canalyze在一次掃描中讀取工程的全部代碼,但針對發(fā)生變更的函數(shù)或文件進(jìn)行掃描。而全量掃描則是指讀取工程的全部代,并對工程中所包含的全部代碼進(jìn)行掃描。相對于部分掃描,由于增量掃描Canalyze可以追蹤到工程代碼中更**的函數(shù)調(diào)用信息,并將調(diào)用的其他函數(shù)信息包含在析中,從而可以去除大部分誤報,并檢出更多潛在的錯誤。而對于全量描,增量掃描更加輕量級,而且針對性也更強(qiáng),可以有 效避冗長的掃描帶的時間開,以及減少與本次提交不相關(guān)的錯誤報告的 產(chǎn)生。
對于開發(fā)人員來說一般增量掃描可以提供足夠的檢查強(qiáng)度。因此相對于部分掃描,增量掃描可更加**地檢測代碼中可能包含的缺陷。而對于測試 人員和質(zhì)量工程人員,更適合使用全量掃。由于Canalyze探索的路徑比較**,因此可以通過Canalyze給出的錯報告來構(gòu)造一些額外的測試用例,從而提高測試用例的覆蓋率以及代碼的壯性。
此外,Canalyze還提供了各度的屏蔽功能。由于分析過程中庫函數(shù)源代碼缺失,以及分析工具對于和時間開銷的折衷此不可避免地會產(chǎn)生
誤報。通過使用屏蔽功能,可以在掃描的過程中跳或屏蔽對于會產(chǎn)生大量誤報的代碼的分析,可以屏蔽在某些特殊情況下,一種高誤報檢查器產(chǎn)生的特
定錯誤類型的報告,從而減少確認(rèn)錯誤報告的本。
Canalyze提供了XML格式化文件形網(wǎng)頁形式兩種類型的錯誤報告。格式化的XML形式的錯誤報告,可以方項目管理人員對接內(nèi)部使用的缺陷
管理系統(tǒng),從而提高缺陷確認(rèn)效率并減少管理成本。而可讀性高頁形式的錯誤報告,可以方便開發(fā)測試人員直接閱讀報告內(nèi)容,便于使用。同時, Canalyze提供了詳細(xì)的使用文檔,從而可以方便用戶進(jìn)行使和配置。國產(chǎn)C程序靜態(tài)分析工具軟件
Canalyze已經(jīng)在一些重要的開源程序(openssh-5.9p1,get-1.13,libosip2- 3.6.0,sqlite-3.7.11,httpd-2.4.4,bftpd-3.8)中檢測到了很多誤,并且得到了開
發(fā)者的確認(rèn)。例如,bftp的開發(fā)人給我們回復(fù):“Allofthepoblemsyoureported arecorrect.Thememoryhandlingforbftpd_cwd_mappath()wasanespeciallybad
bug.”
工具結(jié)構(gòu)圖
運行環(huán)境與配置
1)支持的運行平臺:
支持64 位字長的Linux操作系統(tǒng)內(nèi)核版本3 0 及以上。 Python2,版本2.7 及以上
Python3,版本3.5 及以Clang編譯器(版本3.3以上)或GCC編譯(版本7.3.0 及以上)
2)支持的C代碼標(biāo)準(zhǔn)和語法特性:
C99 標(biāo)準(zhǔn)或Clang3.3支持的其他C語法特性。
3.與同行業(yè)相比的優(yōu)勢
在業(yè)界已經(jīng)有一些商業(yè)化的程序分析工具。如,F(xiàn)ortifoverity,等等。與它們相比,我們的工具主要是基于符號執(zhí)行技術(shù),能**模擬程序的行為。
因此,分析結(jié)果更**,誤報率更低。同時,提供的多種描方式具有更好的適應(yīng)性,能夠適用于多種不同場景、分析精度和掃描粒度下的不同需求。錯誤
報告可讀性強(qiáng),XML報告可以更好的適配用戶使用的環(huán)境。
更多國產(chǎn)C程序靜態(tài)分析工具軟件信息請直接致電埃登威上海021-55581219產(chǎn)品:微量氧分析儀,藥品殘氧儀,露點儀,熱導(dǎo)氣體分析儀,GE流量計,OX-1氧傳感器,頂空分析儀,紅外氣體分析儀,高溫濕度儀,西門子U23分析儀,ppb微量水分析儀,OXY.IQ氧分析儀,煙氣濕度儀,燃?xì)鉄嶂祪x,Kaye溫度驗證儀,L&W白度,儀激光氧分析儀,壓縮空氣露點儀,干燥機(jī)露點儀,激光氣體分析儀,便攜式露點儀,便攜式微量氧分析儀,F(xiàn)ei (維修中心,代表處,總代理,分公司,子公司,售后中心,銷售中心,上海辦,辦事處)