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