什么是靜態(tài)分析?
靜態(tài)分析不涉及被測軟件的動態(tài)執(zhí)行,并且可以在運行程序之前的早期階段檢測可能的缺陷。
靜態(tài)分析在編碼之后和執(zhí)行單元測試之前完成。
靜態(tài)分析可以由機器完成,以自動“遍歷”源代碼并檢測不合規(guī)規(guī)則。經典的例子是一個編譯器,它可以找到詞匯,句法甚至一些語義錯誤。
靜態(tài)分析也可以由審查代碼的人執(zhí)行,以確保使用正確的編碼標準和約定來構建程序。這通常稱為代碼審查,由同行開發(fā)人員(編寫代碼的開發(fā)人員以外的人)完成。
靜態(tài)分析還用于強制開發(fā)人員通過設置不得使用的規(guī)則來不使用編程語言的風險或錯誤部分。
當開發(fā)人員執(zhí)行代碼分析時,他們通常會尋找
? 代碼行
? 評論頻率
? 適當?shù)那短?br/>? 函數(shù)調用次數(shù)
? 循環(huán)復雜性
? 也可以檢查單元測試
質量屬性可以成為靜態(tài)分析的重點:
? 可靠性
? 可維護性
? 可測性
? 可重用性
? 可移植性
? 效率
靜態(tài)分析的優(yōu)點是什么?
靜態(tài)分析的主要優(yōu)點是,在準備進行集成和進一步測試之前,它會發(fā)現(xiàn)代碼存在問題。
靜態(tài)代碼分析的優(yōu)點:
? 它可以在確切的位置找到代碼中的弱點。
? 它可以由經過培訓的軟件保障開發(fā)人員進行,他們完全理解代碼。
? 其他或未來的開發(fā)人員可以輕松理解源代碼
? 它允許更快地轉換修復
? 在開發(fā)生命周期的早期發(fā)現(xiàn)了弱點,降低了修復成本。
? 在以后的測試中減少缺陷
? 檢測到使用動態(tài)測試不能或幾乎檢測不到的獨特缺陷
? 無法訪問的代碼
? 可變使用(未申報,未使用)
? 未調用的函數(shù)
? 邊界值違規(guī)
靜態(tài)代碼分析限制:
? 如果手動進行則很費時間。
? 自動化工具會產生誤報和漏報。
? 沒有足夠的訓練有素的人員來徹底進行靜態(tài)代碼分析。
? 自動化工具可以提供錯誤的安全感,以便解決所有問題。
? 自動化工具的效果與它們用于掃描的規(guī)則一樣好。
? 它沒有發(fā)現(xiàn)運行時環(huán)境中引入的漏洞。
什么是動態(tài)分析?
與靜態(tài)分析相反,在不執(zhí)行代碼的情況下,動態(tài)分析基于系統(tǒng)執(zhí)行,通常使用工具。
來自維基百科對動態(tài)程序分析的定義:
動態(tài)程序分析是對計算機軟件的分析,該計算機軟件是通過在真實或虛擬處理器上執(zhí)行從該軟件構建的程序來執(zhí)行的(在不執(zhí)行程序的情況下執(zhí)行的分析稱為靜態(tài)代碼分析)。動態(tài)程序分析工具可能需要加載特殊庫甚至重新編譯程序代碼。
最常見的動態(tài)分析實踐是針對代碼執(zhí)行單元測試以查找代碼中的任何錯誤。
動態(tài)代碼分析優(yōu)勢:
? 它識別運行時環(huán)境中的漏洞。
? 它允許分析您無法訪問實際代碼的應用程序。
? 它識別靜態(tài)代碼分析中可能是漏報的漏洞。
? 它允許您驗證靜態(tài)代碼分析結果。
? 它可以針對任何應用程序進行。
動態(tài)代碼分析限制:
? 自動化工具提供了一種錯誤的安全感,一切都在被解決。
? 無法保證源代碼的完整測試覆蓋率
? 自動化工具會產生誤報和漏報。
? 自動化工具僅與用于掃描的規(guī)則一樣好。
? 將漏洞追溯到代碼中的確切位置更加困難,需要更長時間才能解決問題。
另外有需要云服務器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。