簡化軟件開發的五款機器學習工具
譯文【51CTO.com快譯】使用機器學習的開發人員開展的討論大多圍繞著創建基于AI的應用程序以及用于創建它們的工具:TensorFlow、PyTorch和Scikit-learn等。
但是機器學習還在另一個方面影響軟件開發:通過新的開發工具,這種工具使用機器學習技術使編程更輕松、更高效。本文介紹了五個項目:三個商業項目、兩個實驗項目,它們讓機器學習在開發過程中為開發人員所用。
Kite
Kite是一種代碼完成工具,適用于大多數主要的代碼編輯器,它使用機器學習技術在你敲鍵輸入時填寫代碼。
Kite使用的機器學習模型是以這種方法創建的:拿來GitHub上公開可用的代碼,從中獲得抽象語法樹,將其作為模型的基礎。據Kite聲稱,這可以從代碼的上下文和意圖(而不僅僅是從文本)獲得自動建議和自動完成。
眼下,Kite僅面向Python開發人員,但支持Go的功能正在開發中。雖然Kite最初只適用于Windows和MacOS用戶,但現在它也支持Linux。
2017年,Kite因處理用戶數據不當及修改面向Atom的autocomplete-python軟件包而在開源社區引發關注。這家公司已解決了這兩個問題,聲稱Kite不再將用戶代碼發回到云服務器,而是在本地執行所有處理,并明確承認autocomplete-python軟件包是Kite倡導的軟件包。
Codota
Codota與Kite非常相似。它使用機器學習模型,拿Java和Kotlin代碼來訓練,在你鍵入時為這些語言自動完成代碼。與Kite一樣,Codota使用代碼的語法樹,而不僅僅是文本,作為構建模型的數據。
與改版后的Kite不同,Codota使用基于云的服務來生成和提供預測。然而據該服務的文檔顯示,Codota并不將用戶代碼發送到Codota服務器,只發送“來自當前編輯的文件的少量上下文信息,以便我們根據目前的本地范圍進行預測。”
Codota適用于Windows、MacOS和Linux,但編輯器支持僅限于IntelliJ、Android Studio和Eclipse(Luna或更高版本)。鑒于它專注于Java和Kotlin語言,這有其道理。該公司特別指出,支持其他語言的功能正在開發中,JavaScript排在第一位。(現在擁有針對JetBrains JavaScript IDE:WebStorm的測試版支持。)
免費版Codota使用從免費獲取的代碼創建的預測。企業版可以使用私有代碼存儲庫來用于訓練。
DeepCode
DeepCode可以在AI的指導下自動審查代碼,以檢測潛在的安全漏洞。與Kite和Codota一樣,DeepCode分析公共存儲庫中可用的代碼以查找常見模式。但DeepCode使用那些模式來識別安全漏洞。
DeepCode專注于“污點分析”(taint analysis),確定用戶輸入在到達任何安全關鍵點之前是如何處理的。如果未驗證是否可以安全傳送,直接從用戶輸入到SQL查詢的數據被視為“污點”,引發警報。
DeepCode聲稱可以標記的嚴重錯誤包括Web應用程序中常見的安全問題:跨站腳本、SQL注入攻擊、遠程代碼執行和路徑遍歷攻擊。
DeepCode的分析適用于GitHub和Bitbucket存儲庫,對于開源項目或至多30名開發人員的私有項目而言,它們不需要任何費用。DeepCode還可用于掃描本地代碼托管(比如GitHub Enterprise),可索取價目表。
微軟PROSE
PROSE的全稱是“使用示例進行程序合成”。微軟的這個項目是用于從示例輸入和輸出生成代碼的SDK。因此,PROSE這個工具包可用于構建預測編碼工具,而它本身不是預測編碼工具。
潛在的PROSE應用領域包括通過示例轉換文本(其中一個實現是微軟在Excel中的“Flash Fill”功能)、從文本文件中提取數據(比如日志分析)以及預測文件操作(比如通過示例將文本拆分成多列)。
鏈接:https://microsoft.github.io/prose/
Pix2code
Pix2code的理念聽起來像科幻小說。為Pix2code提供圖形用戶界面的屏幕截圖,它會生成呈現該GUI的代碼。Pix2code使用深度學習模型,使用軟件隨附的數據集進行訓練,以生成Android XML、iOS Storyboard和HTML/CSS等格式的GUI。Pix2code是一個實驗研究項目(“僅供教育用途共享”),因此用它完成的任何工作都需要使用該項目作為進一步開發的基礎。
鏈接:https://github.com/tonybeltramelli/pix2code
原文標題:5 machine learning tools to ease software development,作者:Serdar Yegulalp
【51CTO譯稿,合作站點轉載請注明原文譯者和出處為51CTO.com】