您好,登錄后才能下訂單哦!
什么是靜態分析?
靜態分析不涉及被測軟件的動態執行,并且可以在運行程序之前的早期階段檢測可能的缺陷。
靜態分析在編碼之后和執行單元測試之前完成。
靜態分析可以由機器完成,以自動“遍歷”源代碼并檢測不合規規則。經典的例子是一個編譯器,它可以找到詞匯,句法甚至一些語義錯誤。
靜態分析也可以由審查代碼的人執行,以確保使用正確的編碼標準和約定來構建程序。這通常稱為代碼審查,由同行開發人員(編寫代碼的開發人員以外的人)完成。
靜態分析還用于強制開發人員通過設置不得使用的規則來不使用編程語言的風險或錯誤部分。
當開發人員執行代碼分析時,他們通常會尋找
? 代碼行
? 評論頻率
? 適當的嵌套
? 函數調用次數
? 循環復雜性
? 也可以檢查單元測試
質量屬性可以成為靜態分析的重點:
? 可靠性
? 可維護性
? 可測性
? 可重用性
? 可移植性
? 效率
靜態分析的優點是什么?
靜態分析的主要優點是,在準備進行集成和進一步測試之前,它會發現代碼存在問題。
靜態代碼分析的優點:
? 它可以在確切的位置找到代碼中的弱點。
? 它可以由經過培訓的軟件保障開發人員進行,他們完全理解代碼。
? 其他或未來的開發人員可以輕松理解源代碼
? 它允許更快地轉換修復
? 在開發生命周期的早期發現了弱點,降低了修復成本。
? 在以后的測試中減少缺陷
? 檢測到使用動態測試不能或幾乎檢測不到的獨特缺陷
? 無法訪問的代碼
? 可變使用(未申報,未使用)
? 未調用的函數
? 邊界值違規
靜態代碼分析限制:
? 如果手動進行則很費時間。
? 自動化工具會產生誤報和漏報。
? 沒有足夠的訓練有素的人員來徹底進行靜態代碼分析。
? 自動化工具可以提供錯誤的安全感,以便解決所有問題。
? 自動化工具的效果與它們用于掃描的規則一樣好。
? 它沒有發現運行時環境中引入的漏洞。
什么是動態分析?
與靜態分析相反,在不執行代碼的情況下,動態分析基于系統執行,通常使用工具。
來自維基百科對動態程序分析的定義:
動態程序分析是對計算機軟件的分析,該計算機軟件是通過在真實或虛擬處理器上執行從該軟件構建的程序來執行的(在不執行程序的情況下執行的分析稱為靜態代碼分析)。動態程序分析工具可能需要加載特殊庫甚至重新編譯程序代碼。
最常見的動態分析實踐是針對代碼執行單元測試以查找代碼中的任何錯誤。
動態代碼分析優勢:
? 它識別運行時環境中的漏洞。
? 它允許分析您無法訪問實際代碼的應用程序。
? 它識別靜態代碼分析中可能是漏報的漏洞。
? 它允許您驗證靜態代碼分析結果。
? 它可以針對任何應用程序進行。
動態代碼分析限制:
? 自動化工具提供了一種錯誤的安全感,一切都在被解決。
? 無法保證源代碼的完整測試覆蓋率
? 自動化工具會產生誤報和漏報。
? 自動化工具僅與用于掃描的規則一樣好。
? 將漏洞追溯到代碼中的確切位置更加困難,需要更長時間才能解決問題。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。