首頁 > 人工智能 > 正文

如何利用機器學習進行靜態分析

2020-12-28 10:13:08  來源:企業網D1Net

摘要:機器學習和人工智能這兩種技術在許多領域廣泛應用,尤其是在營銷分析和網絡安全方面,它們在這些領域的成功應用促使有些人試圖將它們用于所有方面。
關鍵詞: 機器 學習
  機器學習和人工智能這兩種技術在許多領域廣泛應用,尤其是在營銷分析和網絡安全方面,它們在這些領域的成功應用促使有些人試圖將它們用于所有方面。這其中包括使用機器學習系統創建用于定位安全漏洞的靜態代碼分析器。
 
  其中一些應用嘗試取得了一定的成功:Facebook、亞馬遜和Mozilla公司現在都提供了某種形式的機器學習驅動的靜態代碼分析器。但是,正如了解機器學習基礎的任何人都知道的那樣,這些方法也存在一些固有的局限性。
 
  機器學習靜態分析器
 
  在過去的幾年里,人們看到市場上出現了大量的機器學習驅動的靜態分析器。其中一些是由熱心的業余愛好者開發的;另一些是由科技巨頭開發的,Facebook、亞馬遜和Mozilla現在都在提供這樣的工具,而且在發布每一個版本時都承諾會徹底改變開發過程。
 
  實際上,這些工具在搜索漏洞和錯誤時為開發人員節省了時間。以下了解一下市場上主流的一些機器學習靜態分析器:
 
  1.DeepCode
 
  DeepCode可能是Java、JavaScript和Python最著名的漏洞搜索程序。DeepCode還提供了一個機器學習模塊,開發人員稱其為“開發人員的語法”。
 
  DeepCode的機器學習模塊通過查看開發人員在處理大量項目時所做的大量更改來工作。通過學習,DeepCode可以為開發人員提供針對他們正在解決的問題的建議解決方案,并捕獲以前出現的錯誤。
 
  DeepCode仍然包含一些限制。該系統的開發者聲稱,自從2018年起將支持采用C ++語言,開發人員可以通過其插件使用C ++和DeepCode。
 
  2.Infer
 
  Infer已經存在了將近十年,并于2013年被Facebook公司收購,作為基于機器學習原理的靜態代碼分析器的基礎。由于多種原因,Infer作為靜態分析器已變得非常流行:它支持多種語言,并且可以與AWS和Oculus結合使用。最重要的是,該項目的源代碼于2015年開放,從而推動了項目的快速發展。
 
  盡管它很受歡迎,即使是使用Infer的開發人員也承認,即使在Facebook項目中,它生成的警告中也只有80%是有用的。它將發現指針取消引用和內存泄漏錯誤,但是仍然存在Infer無法檢測到的錯誤類別,包括類型轉換異常和未驗證的數據泄漏。
 
  3.Source{d}
 
  Source {d}是一個開源靜態代碼分析器和開發管理器,它不僅致力于為管理者提供有關特定軟件項目進度的信息,而且還為開發人員提供了許多工具。作為靜態應用程序安全測試協議的一部分,它可以執行許多有用的SAST功能,其中包括分析字節碼和二進制文件以及應用程序源代碼中的漏洞。
 
  該軟件的主要優點之一是其源代碼是完全透明的,并且可以在GitHub存儲庫中使用,從而使開發人員可以從根本上構建自己的機器學習增強型代碼分析器。
 
  這就是說,Source {d}在隔離代碼錯誤方面非常有限。它使用Babelfish服務將特定的代碼實例轉換為通用語法樹,并從那里可以簡化和建議對代碼的編輯,使其更易于使用。在使用代碼時,這可以為開發人員節省大量的時間,但這并不是一個完整的靜態分析器。
 
  其他的靜態分析器
 
  除了這三種解決方案之外,還有一些新興的靜態分析器有望實現。Clever-commit是Mozilla公司的一個項目,但是在細節方面仍然令人沮喪。CodeGuru是亞馬遜公司的機器學習增強型靜態代碼分析器,但目前僅適用于Java。Embold是一個用于錯誤分析的啟動平臺,提供可視化的代碼依存關系,但在可使用的語言方面也受到限制。
 
  所有這些系統對于開發人員都非常有用,但只有在將它們與特定語言結合使用的情況下,并且僅在經過培訓以實現特定結果的地方,這些功能才是有用的。換句話說,支持機器學習的靜態代碼分析器(一種可以在多種語言和環境中捕獲錯誤和故障的多功能工具)的承諾尚未實現。
 
  開發愛好者會說這只是因為機器學習驅動的靜態分析器仍需要進一步開發。然而,重新考慮機器學習系統的實際工作方式表明,這些問題可能會持續存在一段時間。
 
  結論
 
  最后,人們要了解的是。機器學習技術仍處于起步階段,并可能在許多開發領域中找到許多有用的應用程序。但是需要知道,機器學習技術仍然很難改變靜態分析工具的構建方式。
 
  從最根本的角度來說,這是因為靜態分析與機器學習平臺本質上是不同的。與用于運行人工智能和機器學習系統的模糊的概率邏輯不同,錯誤隔離和修復需要精確的、可重復的方法。最終人們不希望靜態分析器根據其他示例指出代碼可能出錯,并且想確切地知道它是否能夠工作。
 
  遺憾的是,只有通過明確編碼的分析器才能實現這種確定性。至少現在是這樣。

第三十二屆CIO班招生
法國布雷斯特商學院碩士班招生
北達軟EXIN網絡空間與IT安全基礎認證培訓
北達軟EXIN DevOps Professional認證培訓
責編:zhangwenwen
日本熟妇色在线视频