脸书开源程序代码推荐工具Aroma

脸书开源应用机器学习的程序代码推荐工具Aroma,能以程序代码搜索程序代码的方式,帮助开发者针对特定任务,查询其他开发者的处理方法,Aroma可以搜索大型程序代码库,并提供程序代码推荐结果,以加速开发者的开发效率。

脸书提到,过去没有任何工具可以良好的解决程序代码推荐问题,无论是文件搜索工具还是程序代码搜索工具,取得的结果都不够精准,难以找到适合可立即使用的程序代码撰写模式。 Aroma可以让开发者直接以程序代码片段进行搜索,Aroma则会回传程序代码建议,而这些建议来自程序代码存储库中,找到的程序代码片段汇总。

脸书举例,当Android开发者想要了解其他人撰写位图解码的写法,就能使用原本的程序代码(下图)进行搜索,Aroma回传的每个程序代码建议结果,是汇总存储库中数个程序代码片段而成,能够呈现位图解码常用的程序代码写法。

Aroma从存储库中找到五个类似的方法,合成为最终的程序代码建议结果,下图这个建议结果简化了各个方法的具体细节,但是依照结果可以知道,这五个参考的程序代码方法,开发者们在解码位图的时候,都设置了额外的Options,并且设置了SampleSize以减少解码大型位图时的内存使用。

与其他搜索解决方案不同的是,Aroma并非以字符串或是Token进行匹配,而是找出能类似查询程序代码的例子,并且修剪不相关的程序代码,以突显需要强调的部分。而且Aroma所产生的程序代码建议,是汇总相似程序代码的结果,这些推荐结果代表着惯用写法,因此比起单一搜索结果,更具代表性也更容易使用。

脸书也强调,Aroma的执行速度非常快,可以即时的提供结果,即便在非常庞大的程序代码存储库,也只要几秒钟的时间创建建议,不需要进行预先的模式探勘,而且Aroma的核心算法与语言无关,脸书在内部的Hack、JavaScript、Python和Java程序代码裤都部署了Aroma。