1. 程式人生 > 資訊 >AI 幫程式碼找 Bug,英特爾開源機器程式設計工具 ControlFlag

AI 幫程式碼找 Bug,英特爾開源機器程式設計工具 ControlFlag

10 月 21 日訊息,英特爾近日開源了機器程式設計工具 ControlFlag,這是一種使用機器學習來檢測計算機程式碼問題的工具。理想情況下,ControlFlag 的應用可以減少除錯應用程式和軟體所需的時間。

在測試中,英特爾的機器程式設計研究團隊表示,ControlFlag 在專有的“生產質量(production-quality)”軟體中發現了數百個缺陷,證明了它的實用性。

機器程式設計工具 ControlFlag 可通過 https://github.com/IntelLabs/control-flag 下載。

一、意圖、發明、適應,英特爾機器程式設計三大支柱

英特爾機器程式設計研究團隊(MPR)的歷史可以追溯到 2017 年。從那時起,英特爾就已經開始著手,構建新穎的機器程式設計(MP)系統,如 ControlFlag,這些系統有助於改進程式碼除錯或自動提取效能。

英特爾實驗室的首席人工智慧科學家兼機器程式設計研究總監和創始人 Justin Gottschlich 表示,研究小組的第一個目標是將開發軟體所需的總時間減少 1,000 倍。例如,今天可能需要三年才能完成的事情,在未來一天內就可以用機器程式設計系統完成。除了提高軟體開發生產力之外,第二個目標是確保機器程式設計系統在合成新軟體時保持特定的質量特徵,如準確率、效能、安全性和可維護性等特徵。

目前,幾乎所有大型軟體在準確性、效能或安全方面都存在漏洞。一些留存時間久,無法被專家程式設計師檢測到的錯誤可以通過機器程式設計自動檢測,並實現零人工干預。此外,隨著軟體在不斷增加新功能,軟體更新會使得引入錯誤的可能性增加並出現問題。

值得注意的是,某些錯誤會存在潛在的安全漏洞,造成損失數百萬美元的災難性後果。

“機器程式設計的三大支柱”是英特爾機器程式設計研究的關鍵:

第一個支柱是意圖,旨在發現程式設計的意圖,從軟體中提升意義,確定人類向機器表達想法的新方式。

第二個支柱是發明,建立新的演算法和資料結構來實現意圖,涉及建立或改進演算法核心硬體和軟體構建塊,使用各種機器程式設計技術實現一些已知的意圖。

第三個支柱是適應,在不斷變化的硬體、軟體世界中發展軟體,自主地演變軟體特定生態系統,協助計算後端進展。自適應系統主要用於幫助識別和改進軟體質量特性,例如效能、安全性和可維護性。

從三大支柱的角度來看,ControlFlag 集中落在了適應支柱,它試圖找到軟體編碼異常。雖然 ControlFlag 還不能自動減輕它發現的缺陷,但它會為使用者提供潛在更正的建議。

二、從英特爾自用到開源,測試近一年

正式開源前,ControlFlag 已在生產級軟體和廣泛使用的開源軟體系統上進行了測試。

例如去年,ControlFlag 發現了客戶端 URL(Client URL,cURL)中的程式碼異常。客戶端 URL 是一個計算機軟體專案,每天使用各種網路協議傳輸資料超過 10 億次。在向客戶端 URL 團隊報告異常後,他們認可了 ControlFlag 的發現並隨後修補了程式碼。

▲ ControlFlag 使用介面(動圖截自視訊網站)

ControlFlag 於 2020 年 12 月首次推出,但在開源之前僅在英特爾內部使用。

Gottschlich 在 LinkedIn 上的一篇博文中提到:“最近,ControlFlag 通過在專有生產級軟體中識別數百個與記憶體和潛在系統崩潰錯誤相關的缺陷,取得了最先進的進展。此外,ControlFlag 在幾個高質量的開源軟體儲存庫中也發現了數十個新的異常。”

ControlFlag 可與任何包含控制結構的程式語言一起使用,並利用無監督學習來減少除錯工作,從未標記的原始碼中學習。隨著新資料的引入,它會不斷髮展以使其實現自我發展。ControlFlag 將自學對資料進行分類,從其固有結構中學習處理未標記的資料。

ControlFlag 不斷從未標記的原始碼中學習,隨著新資料的引入,不斷“進化”使自己變得更好。雖然 ControlFlag 還不能自動減輕它發現的程式設計缺陷,但該工具為開發人員提供了潛在的更正建議,Gottschlich 表示。

三、減少程式碼除錯時間,培育開源生態

這些驚人的結果顯示了 ControlFlag 能夠顯著提高軟體開發的成本和效率。此外,對高質量程式碼的需求增多,吸引了越來越多的有抱負的程式設計師加入這個行業。

最近的一項研究發現,2020 年 IT 行業在與除錯程式碼相關的軟體開發成本上花費了約 2 萬億美元,其中約 50% 的 IT 預算用於除錯程式碼。

“英特爾致力於使軟體更加完善,維護起來更輕鬆,同時保持卓越的效能,而不會引入安全漏洞。我們希望像 ControlFlag 這樣的專案可以大大減少在全球範圍內開發軟體所需的時間。”Gottschlich 表示,“在除錯上花費的大量時間被節省,從而使我們能夠加速技術進步。”

ControlFlag 等 AI 驅動的編碼工具以及程式碼補全工具 Tabnine、程式碼測試工具 Ponicode、程式碼安全稽核工具 Snyk 和程式碼審查軟體 DeepCode 等平臺會減少開發人員之間代價高昂的互動,例如問答環節和重複的程式碼審查反饋。國際商業機器公司(IBM)和人工智慧公司 OpenAI 致力於研究機器學習在軟體開發領域的應用,是潛力十足的眾多公司之二。但研究顯示,實現零人工干預有很長的路要走,才可以代替許多需要程式設計師定期執行的任務。

結論:ControlFlag 開源,工具認可度等待“檢驗”

ControlFlag 測試過程中發現的錯誤被開發人員認可,展示了機器程式設計工具在軟體開發領域的廣闊前景。

英特爾機器程式設計研究團隊專注於提高軟體質量和開發人員生產力。開源 ControlFlag 後,將進一步致力於實現零人工干預。針對提高軟體開發領域的成本、效率問題,眾多程式碼測試、補全、稽核工具上線,多個頭部玩家在機器程式設計研究領域共同努力,將進一步提高軟體開發領域的準確率、安全性。