原創|使用教程|編輯:蔣永|2016-10-28 10:36:16.000|閱讀 807 次
概述:當構建各種系統時,盡早并經常性地檢查和修復錯誤,會顯著減少項目不斷迭代推進的工作量,以及顯著提高工作效率。在軟件工程界,項目團隊通常采用一些方法來確保應用程序功能如期得到實現。其中自動化代碼掃描即靜態分析技術是預防缺陷和修復問題的最簡單,最有效的方法,已經被廣大的軟件工程師驗證和采用,同時還可以明顯地加速軟件產品的交付。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
靜態代碼分析(簡稱靜態分析)是一種必要的開發測試行為,通過掃描代碼模式和結構以及分析邏輯關系,查找潛在缺陷代碼,最終將報告呈現給用戶以便修復代碼缺陷。當高風險代碼被偵測到后,靜態分析掃描工具就會報告相應違規,指引用戶修復代碼漏洞。靜態分析方法一般有如下一些類型:
模式匹配靜態分析方法是靜態分析的一種最簡單形式,即根據預先配置的規則庫去自動化進行代碼掃描,如果發現規則庫中匹配的模式代碼即報告違規。例如,工程師們有時候不小心使用了字符串“”進行字符數組結尾,其實實際是想使用單個字符’’。這個錯誤可能會引起內存損壞并導致程序崩潰。靜態分析工具會在代碼中尋找這些模式代碼并報告可能出現的錯誤。這種靜態分析被稱為模式匹配靜態分析。
數據流分析,有時也被稱為動態分析,與上面提到的模式匹配靜態分析有些許不同。這種類型的代碼分析檢查問題前同樣需要配置一組規則集(規則庫),但數據流分析方法會在執行代碼掃描時模擬程序的執行路徑,追蹤數據流向如指針所指向內存的處理流向等,仿真執行程序,查找和報告運行時錯誤,深入挖掘軟件項目代碼中難以發現的缺陷,例如空指針取消引用、緩沖區溢出、資源泄露、SQL注入等等。
為了實現不同的代碼掃描目標,還有一些其他類型的靜態分析方法,如度量分析,通過預先配置的代碼結構度量閾值,來自動化掃描代碼結構的同時報告項目代碼的結構復雜性,統計相應軟件項目代碼中字段的繼承深度,圈復雜度等等,以便后續可以對項目進行重構提供重要依據,優化產品,提高軟件產品的可靠性和健壯性。
市場上的各種軟件正變得越來越復雜,每天我們都會和各種不同的軟件打交道,軟件無處不在。例如,汽車系統在早期是純機械的,但今天一般的汽車可能都包含超過1000個代碼行的微控制單元,以響應各種用戶指令,如智能空調,導航系統,安全系統等等。越來越多的硬件設備搭載了響應的智能系統,而每個系統都要求提供安全可靠的功能,去滿足用戶的各種個性化需求,這就要求軟件項目必須具備一定的質量保障方法,比如最切實可行的靜態分析。特別是那些攸關人身安全的行業軟件系統,如汽車電子、醫療器械、航空電子設備等等。
當今軟件市場上,有一些公開或私營企業或組織,如OWASP和MITRE,他們研究和發布了一些常見安全錯誤列表,并倡導最佳編程實踐。在一些特定行業還存在相關的代碼和認證標準,如MISRA,通過強制規定遵守一定的代碼編寫標準來保障相關行業軟件系統的安全性,可靠性和健壯性。而這些最佳實踐或相應行業代碼標準都可以作為靜態分析的具體規則納入到規則庫中,每天持續地進行自動化代碼掃描,切實履行編程最佳實踐。
在客戶端機器上通過手動觸發運行靜態分析就類似于在文字處理程序中運行拼寫檢查,及時報告拼寫錯誤并協助用戶糾正。對于小項目來說,這是可以接受的,但是在大型企業或組織中,靜態分析應該是自動化執行,并且作為持續構建或代碼簽入的一部分。將靜態分析方法當作為開發測試過程的一部分進行整合后,靜態分析能提供許多益處,具體參見如下說明。
在項目的早期階段就引入自動化靜態分析,持續地進行自動化代碼掃描,在修復成本處于最低時就找到問題并修復代碼缺陷。這相比不運行靜態分析而只為加速開發軟件,整個過程最初可能需要花費更多時間,但是效率收益是翻倍增長的。另外,一些靜態分析工具還提供規則庫的詳細編程標準實施描述性文檔,這在查找和規避問題的同時也會擴寬軟件工程師的編程知識,往更專業和更高層次方向發展。開發團隊所產出的代碼是可持續迭代維護開發的,工程師們也更有信心做出代碼改變和創新,其實整個軟件項目開發的速率是階梯式提高的。
靜態分析可以幫助您更早的找到并修復缺陷,可防止軟件產品后期的系統性缺陷。一些靜態分析工具不僅報告靜態分析違規行為,還可與開發平臺集成,直接定位到具體代碼行,這可以幫助你了解所有報告的缺陷實例發生的根本原因。具備了自動化靜態分析技術,就可以更容易地實施缺陷預防政策,從而降低軟件開發生命周期的缺陷率。
“DevOps”一詞常用于描述一組實踐,它促進跨部門合作和溝通,這對幫助企業優化和加速開發過程是必須的。通過跨部門分享知識和任務,企業在提高質量工藝的同時,也為加快SDLC創建了一個高效的進程。這方法是有效的,然而,必須實施一個自動化反饋回路,是整個高效的團隊實踐流程得到改進。
自動化靜態分析不僅是提供反饋循環機制,它還為各相關部門在DevOps模式下有效協作提供了實際素材和具體溝通橋梁。尤其是當代碼測試進入到單元測試和回歸測試時,靜態分析還扮演了如下幾個角色:
因此,靜態分析成為了持續集成構建和軟件開發測試過程持續改進的關鍵推動力。
市場上有一些靜態分析工具,涵蓋范圍從開放源碼事業到全面發展的測試套件。針對Java、C/C++、.Net 等主流語言的軟件產品開發, Parasoft公司提供了一個企業級的開發測試解決方案。除了全方位的靜態代碼分析能力如模式匹配分析、數據流分析和度量分析等,該開發測試平臺還具備良好的擴展性,包括了單元測試,集成測試,運行時錯誤檢測,代碼審查,覆蓋率分析等功能,可以自動化生成測試用例,執行單元測試的同時提供多種視角的覆蓋率分析,提供圖形化報表系統,是一個完善的方案級平臺,全方位落實自動化缺陷預防政策,保障客戶產品質量的同時提高軟件產品交付速度。
靜態代碼分析是確保應用程序功能如期實現的一個重要組成部分。它不僅提高了整個開發團隊的速度,也降低了與釋放潛在危險的軟件相關的風險。雖然有分析總比沒分析好,但應該將靜態分析整合到開發測試基礎設施中,從而最大限度地提高實踐的有效性。Parasoft在代碼級測試中提供了專業的代碼分析和自動化測試套件,開發測試平臺中提供了一個先進的分析和報告系統。結合這兩種技術,使軟件工程團隊加速軟件交付,同時確保他們的應用程序功能滿足客戶需求,符合產品預期,實現商務價值。
活動截止:10月31日
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn