在編寫(xiě)代碼時(shí),大多數(shù)人都知道他們?cè)谧鍪裁?- 至少在當(dāng)時(shí) - 但以后會(huì)有多清楚,以及其他人如何理解它?是否過(guò)于復(fù)雜?它是否遵循規(guī)定的編碼標(biāo)準(zhǔn)?是否有微妙的錯(cuò)誤可能使其容易受到黑客攻擊?除非你檢查,否則你不知道,這意味著靜態(tài)分析。
軟件質(zhì)量的基礎(chǔ)(通常需要資格認(rèn)證或認(rèn)證)是靜態(tài)分析:對(duì)源代碼的解析和檢查。靜態(tài)分析提供了對(duì)代碼編寫(xiě)情況的深刻見(jiàn)解,特別是參考質(zhì)量指標(biāo)和遵守編碼標(biāo)準(zhǔn);它為進(jìn)一步的評(píng)估提供了基礎(chǔ),包括控制和數(shù)據(jù)流分析以及結(jié)構(gòu)覆蓋分析;它為工件提供了基礎(chǔ),這些工件既是可接受的認(rèn)證文件,也是質(zhì)量的有形證據(jù)。
靜態(tài)分析在源代碼級(jí)別工作,方法是像編譯器一樣解析代碼,同時(shí)識(shí)別與控制和數(shù)據(jù)流相關(guān)的信息,例如條件分支的下落。它整理的數(shù)據(jù)為指標(biāo)提供了基礎(chǔ),這些指標(biāo)可幫助開(kāi)發(fā)人員更好地了解正在開(kāi)發(fā)的代碼的清晰度、復(fù)雜性甚至可測(cè)試性。在最簡(jiǎn)單的形式中,它可以標(biāo)記看似微小的事情,例如拼寫(xiě)錯(cuò)誤,這些事情可能會(huì)導(dǎo)致數(shù)小時(shí)的延遲,然后才被發(fā)現(xiàn)。更復(fù)雜的靜態(tài)分析工具還可以計(jì)算諸如循環(huán)復(fù)雜性之類(lèi)的指標(biāo),循環(huán)復(fù)雜度是通過(guò)程序或代碼段的唯一路徑數(shù)的度量,例如可能由過(guò)高的循環(huán)密度(嵌套在循環(huán)中的條件數(shù))導(dǎo)致的。靜態(tài)分析工具可以為程序的不同部分提供密度分?jǐn)?shù),可以指導(dǎo)開(kāi)發(fā)人員提供更簡(jiǎn)單,更清晰的路徑。這也帶來(lái)了更好的可理解性和改進(jìn)的可測(cè)試性。
靜態(tài)分析的另一個(gè)功能是確保符合編碼標(biāo)準(zhǔn),無(wú)論是行業(yè)定義的、用戶(hù)定義的還是兩者的組合。MISRA C、CERT C、CWE 等標(biāo)準(zhǔn)源自開(kāi)發(fā)安全可靠的軟件的研究和行業(yè)最佳實(shí)踐。靜態(tài)分析提供保護(hù),防止在某些情況下可能導(dǎo)致問(wèn)題的細(xì)微錯(cuò)誤和疏忽,例如最近因未檢查變量長(zhǎng)度而導(dǎo)致的臭名昭著的“心臟出血”漏洞。許多行業(yè)功能安全標(biāo)準(zhǔn),如汽車(chē)行業(yè)的ISO 26262和醫(yī)療設(shè)備的IEC 62304,也要求通過(guò)靜態(tài)分析進(jìn)行檢查,確保(例如)沒(méi)有隱藏的數(shù)據(jù)流,也沒(méi)有為了代碼質(zhì)量和安全性而無(wú)條件的跳躍。
靜態(tài)分析有助于“映射”未來(lái)分析
靜態(tài)分析為代碼系統(tǒng)開(kāi)發(fā)了一種“大腦圖譜”,可以用作動(dòng)態(tài)分析技術(shù)的基礎(chǔ),例如詳細(xì)的結(jié)構(gòu)覆蓋分析以及自動(dòng)化單元和集成測(cè)試。反過(guò)來(lái),這些生成自己的相關(guān)指標(biāo),以加強(qiáng)高質(zhì)量開(kāi)發(fā)過(guò)程的證據(jù)。這些測(cè)試及其生成的工件與需求可追溯性工具結(jié)合使用,通過(guò)將功能、安全性和安保要求鏈接到代碼、分析結(jié)果以及測(cè)試用例和結(jié)果,建立了透明的開(kāi)發(fā)生命周期。實(shí)際上,這種雙向可追溯性不僅為忠實(shí)和完整地實(shí)施要求提供了證據(jù)。它還支持對(duì)整個(gè)生命周期中發(fā)生的需求更改或失敗測(cè)試的影響分析,突出顯示受影響的軟件系統(tǒng)的所有部分,從而突出顯示需要重復(fù)的任何分析和測(cè)試。
靜態(tài)分析數(shù)據(jù)提供額外的好處
靜態(tài)分析對(duì)單元測(cè)試的有用性始于對(duì)代碼結(jié)構(gòu)的理解。通過(guò)靜態(tài)分析,可以分析應(yīng)用程序的數(shù)據(jù)和控制方面,理解接口,并推導(dǎo)出測(cè)試用例工具的基礎(chǔ)。這些線束對(duì)于與需求相關(guān)的測(cè)試非常寶貴,可節(jié)省時(shí)間和費(fèi)用。
從這個(gè)派生的數(shù)據(jù)集中,還可以自動(dòng)生成測(cè)試用例本身來(lái)執(zhí)行大部分代碼,并通過(guò)結(jié)構(gòu)覆蓋率分析提供證據(jù)。這些自動(dòng)生成的測(cè)試提供了一種理想的機(jī)制來(lái)增強(qiáng)基于需求的測(cè)試,以得出一組強(qiáng)大的測(cè)試用例,這些用例可以滿(mǎn)足功能、安全和安保要求。同樣,需求可追溯性可以從需求鏈接到驗(yàn)證軟件組件和驗(yàn)證應(yīng)用程序的測(cè)試用例。
在整個(gè)軟件開(kāi)發(fā)生命周期中使用靜態(tài)分析時(shí),可以防止?jié)撛阱e(cuò)誤持續(xù)到需要更多的精力和費(fèi)用來(lái)糾正的程度。來(lái)自靜態(tài)分析的數(shù)據(jù)和依賴(lài)它的分析工具對(duì)于制作越來(lái)越多的政府和工業(yè)組織認(rèn)證所需的測(cè)試證明和文檔至關(guān)重要。
審核編輯:郭婷
-
源代碼
+關(guān)注
關(guān)注
96文章
2944瀏覽量
66670 -
編譯器
+關(guān)注
關(guān)注
1文章
1618瀏覽量
49051
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論