臉書開源應用機器學習的程式碼推薦工具Aroma,能以程式碼搜尋程式碼的方式,幫助開發者針對特定任務,查詢其他開發者的處理方法,Aroma可以搜尋大型程式碼庫,並提供程式碼推薦結果,以加速開發者的開發效率。

臉書提到,過去沒有任何工具可以良好的解決程式碼推薦問題,無論是文件搜尋工具還是程式碼搜尋工具,取得的結果都不夠精準,難以找到適合可立即使用的程式碼撰寫模式。Aroma可以讓開發者直接以程式碼片段進行搜尋,Aroma則會回傳程式碼建議,而這些建議來自程式碼儲存庫中,找到的程式碼片段匯總。

臉書舉例,當Android開發者想要了解其他人撰寫點陣圖解碼的寫法,就能使用原本的程式碼(下圖)進行搜尋,Aroma回傳的每個程式碼建議結果,是匯總儲存庫中數個程式碼片段而成,能夠呈現點陣圖解碼常用的程式碼寫法。

Aroma從儲存庫中找到五個類似的方法,合成為最終的程式碼建議結果,下圖這個建議結果簡化了各個方法的具體細節,但是依照結果可以知道,這五個參考的程式碼方法,開發者們在解碼點陣圖的時候,都設置了額外的Options,並且設定了SampleSize以減少解碼大型點陣圖時的記憶體使用。

與其他搜尋解決方案不同的是,Aroma並非以字串或是Token進行匹配,而是找出能類似查詢程式碼的例子,並且修剪不相關的程式碼,以突顯需要強調的部分。而且Aroma所產生的程式碼建議,是匯總相似程式碼的結果,這些推薦結果代表著慣用寫法,因此比起單一搜尋結果,更具代表性也更容易使用。

臉書也強調,Aroma的執行速度非常快,可以即時的提供結果,即便在非常龐大的程式碼儲存庫,也只要幾秒鐘的時間創建建議,不需要進行預先的模式探勘,而且Aroma的核心演算法與語言無關,臉書在內部的Hack、JavaScript、Python和Java程式碼褲都部署了Aroma。


Advertisement

更多 iThome相關內容