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