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