0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

機(jī)器學(xué)習(xí)進(jìn)行靜態(tài)分析的步驟

如意 ? 來源:企業(yè)網(wǎng)D1Net ? 作者:Lee Doyle ? 2020-12-28 16:08 ? 次閱讀

機(jī)器學(xué)習(xí)人工智能這兩種技術(shù)在許多領(lǐng)域廣泛應(yīng)用,尤其是在營銷分析和網(wǎng)絡(luò)安全方面,它們在這些領(lǐng)域的成功應(yīng)用促使有些人試圖將它們用于所有方面。這其中包括使用機(jī)器學(xué)習(xí)系統(tǒng)創(chuàng)建用于定位安全漏洞的靜態(tài)代碼分析器。

其中一些應(yīng)用嘗試取得了一定的成功:Facebook、亞馬遜和Mozilla公司現(xiàn)在都提供了某種形式的機(jī)器學(xué)習(xí)驅(qū)動的靜態(tài)代碼分析器。但是,正如了解機(jī)器學(xué)習(xí)基礎(chǔ)的任何人都知道的那樣,這些方法也存在一些固有的局限性。

機(jī)器學(xué)習(xí)靜態(tài)分析器

在過去的幾年里,人們看到市場上出現(xiàn)了大量的機(jī)器學(xué)習(xí)驅(qū)動的靜態(tài)分析器。其中一些是由熱心的業(yè)余愛好者開發(fā)的;另一些是由科技巨頭開發(fā)的,F(xiàn)acebook、亞馬遜和Mozilla現(xiàn)在都在提供這樣的工具,而且在發(fā)布每一個版本時都承諾會徹底改變開發(fā)過程。

實(shí)際上,這些工具在搜索漏洞和錯誤時為開發(fā)人員節(jié)省了時間。以下了解一下市場上主流的一些機(jī)器學(xué)習(xí)靜態(tài)分析器:

1.DeepCode

DeepCode可能是Java、JavaScript和Python最著名的漏洞搜索程序。DeepCode還提供了一個機(jī)器學(xué)習(xí)模塊,開發(fā)人員稱其為“開發(fā)人員的語法”。

DeepCode的機(jī)器學(xué)習(xí)模塊通過查看開發(fā)人員在處理大量項(xiàng)目時所做的大量更改來工作。通過學(xué)習(xí),DeepCode可以為開發(fā)人員提供針對他們正在解決的問題的建議解決方案,并捕獲以前出現(xiàn)的錯誤。

DeepCode仍然包含一些限制。該系統(tǒng)的開發(fā)者聲稱,自從2018年起將支持采用C ++語言,開發(fā)人員可以通過其插件使用C ++和DeepCode。

2.Infer

Infer已經(jīng)存在了將近十年,并于2013年被Facebook公司收購,作為基于機(jī)器學(xué)習(xí)原理的靜態(tài)代碼分析器的基礎(chǔ)。由于多種原因,Infer作為靜態(tài)分析器已變得非常流行:它支持多種語言,并且可以與AWS和Oculus結(jié)合使用。最重要的是,該項(xiàng)目的源代碼于2015年開放,從而推動了項(xiàng)目的快速發(fā)展。

盡管它很受歡迎,即使是使用Infer的開發(fā)人員也承認(rèn),即使在Facebook項(xiàng)目中,它生成的警告中也只有80%是有用的。它將發(fā)現(xiàn)指針取消引用和內(nèi)存泄漏錯誤,但是仍然存在Infer無法檢測到的錯誤類別,包括類型轉(zhuǎn)換異常和未驗(yàn)證的數(shù)據(jù)泄漏。

3.Sourceh6bsjyr

Source tjll6b2是一個開源靜態(tài)代碼分析器和開發(fā)管理器,它不僅致力于為管理者提供有關(guān)特定軟件項(xiàng)目進(jìn)度的信息,而且還為開發(fā)人員提供了許多工具。作為靜態(tài)應(yīng)用程序安全測試協(xié)議的一部分,它可以執(zhí)行許多有用的SAST功能,其中包括分析字節(jié)碼和二進(jìn)制文件以及應(yīng)用程序源代碼中的漏洞。

該軟件的主要優(yōu)點(diǎn)之一是其源代碼是完全透明的,并且可以在GitHub存儲庫中使用,從而使開發(fā)人員可以從根本上構(gòu)建自己的機(jī)器學(xué)習(xí)增強(qiáng)型代碼分析器。

這就是說,Source 5h75l7m在隔離代碼錯誤方面非常有限。它使用Babelfish服務(wù)將特定的代碼實(shí)例轉(zhuǎn)換為通用語法樹,并從那里可以簡化和建議對代碼的編輯,使其更易于使用。在使用代碼時,這可以為開發(fā)人員節(jié)省大量的時間,但這并不是一個完整的靜態(tài)分析器。

其他的靜態(tài)分析器

除了這三種解決方案之外,還有一些新興的靜態(tài)分析器有望實(shí)現(xiàn)。Clever-commit是Mozilla公司的一個項(xiàng)目,但是在細(xì)節(jié)方面仍然令人沮喪。CodeGuru是亞馬遜公司的機(jī)器學(xué)習(xí)增強(qiáng)型靜態(tài)代碼分析器,但目前僅適用于Java。Embold是一個用于錯誤分析的啟動平臺,提供可視化的代碼依存關(guān)系,但在可使用的語言方面也受到限制。

所有這些系統(tǒng)對于開發(fā)人員都非常有用,但只有在將它們與特定語言結(jié)合使用的情況下,并且僅在經(jīng)過培訓(xùn)以實(shí)現(xiàn)特定結(jié)果的地方,這些功能才是有用的。換句話說,支持機(jī)器學(xué)習(xí)的靜態(tài)代碼分析器(一種可以在多種語言和環(huán)境中捕獲錯誤和故障的多功能工具)的承諾尚未實(shí)現(xiàn)。

開發(fā)愛好者會說這只是因?yàn)闄C(jī)器學(xué)習(xí)驅(qū)動的靜態(tài)分析器仍需要進(jìn)一步開發(fā)。然而,重新考慮機(jī)器學(xué)習(xí)系統(tǒng)的實(shí)際工作方式表明,這些問題可能會持續(xù)存在一段時間。

結(jié)論

最后,人們要了解的是。機(jī)器學(xué)習(xí)技術(shù)仍處于起步階段,并可能在許多開發(fā)領(lǐng)域中找到許多有用的應(yīng)用程序。但是需要知道,機(jī)器學(xué)習(xí)技術(shù)仍然很難改變靜態(tài)分析工具的構(gòu)建方式。

從最根本的角度來說,這是因?yàn)殪o態(tài)分析與機(jī)器學(xué)習(xí)平臺本質(zhì)上是不同的。與用于運(yùn)行人工智能和機(jī)器學(xué)習(xí)系統(tǒng)的模糊的概率邏輯不同,錯誤隔離和修復(fù)需要精確的、可重復(fù)的方法。最終人們不希望靜態(tài)分析器根據(jù)其他示例指出代碼可能出錯,并且想確切地知道它是否能夠工作。

遺憾的是,只有通過明確編碼的分析器才能實(shí)現(xiàn)這種確定性。至少現(xiàn)在是這樣。
責(zé)編AJX

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
收藏 人收藏

    評論

    相關(guān)推薦

    機(jī)器學(xué)習(xí)的基礎(chǔ)內(nèi)容

    學(xué)習(xí),本文就介紹了機(jī)器學(xué)習(xí)的基礎(chǔ)內(nèi)容。提示:以下是本篇文章正文內(nèi)容,下面案例可供參考一、pandas是什么?示例:pandas 是基于NumPy 的一種工具,該工具是為了解決數(shù)據(jù)分析
    發(fā)表于 08-20 08:07

    機(jī)器學(xué)習(xí)的基礎(chǔ)內(nèi)容

    :隨著人工智能的不斷發(fā)展,機(jī)器學(xué)習(xí)這門技術(shù)也越來越重要,很多人都開啟了學(xué)習(xí)機(jī)器學(xué)習(xí),本文就介紹了機(jī)器學(xué)習(xí)
    發(fā)表于 11-24 06:00

    機(jī)器學(xué)習(xí)的基礎(chǔ)內(nèi)容介紹

    學(xué)習(xí),本文就介紹了機(jī)器學(xué)習(xí)的基礎(chǔ)內(nèi)容。提示:以下是本篇文章正文內(nèi)容,下面案例可供參考一、pandas是什么?示例:pandas 是基于NumPy 的一種工具,該工具是為了解決數(shù)據(jù)分析
    發(fā)表于 01-12 08:12

    機(jī)器學(xué)習(xí)的基礎(chǔ)內(nèi)容匯總

    人工智能的不斷發(fā)展,機(jī)器學(xué)習(xí)這門技術(shù)也越來越重要,很多人都開啟了學(xué)習(xí)機(jī)器學(xué)習(xí),本文就介紹了機(jī)器學(xué)習(xí)
    發(fā)表于 02-28 06:12

    什么是機(jī)器學(xué)習(xí)? 機(jī)器學(xué)習(xí)基礎(chǔ)入門

    的指導(dǎo)下,這個過程從數(shù)據(jù)開始。也就是說,我們嵌入式系統(tǒng)產(chǎn)生的大量數(shù)據(jù)。機(jī)器學(xué)習(xí)開發(fā)過程的第一步是收集數(shù)據(jù),并在數(shù)據(jù)輸入模型之前對其進(jìn)行標(biāo)記。標(biāo)記是一個關(guān)鍵的分類步驟,也是我們將一組輸入
    發(fā)表于 06-21 11:06

    機(jī)器學(xué)習(xí)模型切實(shí)可行的優(yōu)化步驟

    這篇文章提供了可以采取的切實(shí)可行的步驟來識別和修復(fù)機(jī)器學(xué)習(xí)模型的訓(xùn)練、泛化和優(yōu)化問題。
    的頭像 發(fā)表于 05-04 12:08 ?2546次閱讀

    市場上主流的機(jī)器學(xué)習(xí)靜態(tài)分析

    機(jī)器學(xué)習(xí)和人工智能這兩種技術(shù)在許多領(lǐng)域廣泛應(yīng)用,尤其是在營銷分析和網(wǎng)絡(luò)安全方面,它們在這些領(lǐng)域的成功應(yīng)用促使有些人試圖將它們用于所有方面。這其中包括使用機(jī)器
    的頭像 發(fā)表于 12-27 09:50 ?1362次閱讀

    共射極放大電路的靜態(tài)分析步驟 靜態(tài)工作點(diǎn)調(diào)整方法

      共射極放大電路的靜態(tài)分析是指對該電路在直流偏置下的電性能進(jìn)行分析。靜態(tài)分析的目的是確定晶體管
    發(fā)表于 02-27 11:10 ?9348次閱讀

    機(jī)器學(xué)習(xí)之關(guān)聯(lián)分析介紹

    數(shù)據(jù)挖掘中應(yīng)用較多的技術(shù)是機(jī)器學(xué)習(xí)。機(jī)器學(xué)習(xí)主流算法包括三種:關(guān)聯(lián)分析、分類分析、聚類
    的頭像 發(fā)表于 03-25 14:13 ?1613次閱讀

    機(jī)器學(xué)習(xí)之分類分析與聚類分析

    數(shù)據(jù)挖掘中應(yīng)用較多的技術(shù)機(jī)器學(xué)習(xí)。機(jī)器學(xué)習(xí)主流算法包括三種:關(guān)聯(lián)分析、分類分析、聚類
    的頭像 發(fā)表于 03-27 14:13 ?4171次閱讀

    使用Azure和機(jī)器學(xué)習(xí)進(jìn)行傳感器數(shù)據(jù)分析

    電子發(fā)燒友網(wǎng)站提供《使用Azure和機(jī)器學(xué)習(xí)進(jìn)行傳感器數(shù)據(jù)分析.zip》資料免費(fèi)下載
    發(fā)表于 06-16 10:57 ?1次下載
    使用Azure和<b class='flag-5'>機(jī)器</b><b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>進(jìn)行</b>傳感器數(shù)據(jù)<b class='flag-5'>分析</b>

    使用機(jī)器學(xué)習(xí)進(jìn)行預(yù)測

    電子發(fā)燒友網(wǎng)站提供《使用機(jī)器學(xué)習(xí)進(jìn)行預(yù)測.zip》資料免費(fèi)下載
    發(fā)表于 07-04 10:22 ?0次下載
    使用<b class='flag-5'>機(jī)器</b><b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>進(jìn)行</b>預(yù)測

    使用 RAPIDS RAFT 進(jìn)行機(jī)器學(xué)習(xí)和數(shù)據(jù)分析的可重用計(jì)算模式

    使用 RAPIDS RAFT 進(jìn)行機(jī)器學(xué)習(xí)和數(shù)據(jù)分析的可重用計(jì)算模式
    的頭像 發(fā)表于 07-05 16:30 ?460次閱讀
    使用 RAPIDS RAFT <b class='flag-5'>進(jìn)行</b><b class='flag-5'>機(jī)器</b><b class='flag-5'>學(xué)習(xí)</b>和數(shù)據(jù)<b class='flag-5'>分析</b>的可重用計(jì)算模式

    什么是靜態(tài)代碼分析靜態(tài)代碼分析概述

    靜態(tài)分析可幫助面臨壓力的開發(fā)團(tuán)隊(duì)。高質(zhì)量的版本需要按時交付。需要滿足編碼和合規(guī)性標(biāo)準(zhǔn)。錯誤不是一種選擇。 這就是開發(fā)團(tuán)隊(duì)使用靜態(tài)分析工具/源代碼分析
    的頭像 發(fā)表于 07-19 12:09 ?1449次閱讀
    什么是<b class='flag-5'>靜態(tài)</b>代碼<b class='flag-5'>分析</b>?<b class='flag-5'>靜態(tài)</b>代碼<b class='flag-5'>分析</b>概述

    機(jī)器學(xué)習(xí)算法匯總 機(jī)器學(xué)習(xí)算法分類 機(jī)器學(xué)習(xí)算法模型

    機(jī)器學(xué)習(xí)算法匯總 機(jī)器學(xué)習(xí)算法分類 機(jī)器學(xué)習(xí)算法模型 機(jī)器
    的頭像 發(fā)表于 08-17 16:11 ?957次閱讀