脸书开源程式码推荐工具Aroma

脸书开源应用机器学习的程式码推荐工具Aroma,能以程式码搜寻程式码的方式,帮助开发者针对特定任务,查询其他开发者的处理方法,Aroma可以搜寻大型程式码库,并提供程式码推荐结果,以加速开发者的开发效率。
脸书提到,过去没有任何工具可以良好的解决程式码推荐问题,无论是文件搜寻工具还是程式码搜寻工具,取得的结果都不够精准,难以找到适合可立即使用的程式码撰写模式。Aroma可以让开发者直接以程式码片段进行搜寻,Aroma则会回传程式码建议,而这些建议来自程式码储存库中,找到的程式码片段汇总。
脸书举例,当Android开发者想要了解其他人撰写位图解码的写法,就能使用原本的程式码(下图)进行搜寻,Aroma回传的每个程式码建议结果,是汇总储存库中数个程式码片段而成,能够呈现位图解码常用的程式码写法。
Aroma从储存库中找到五个类似的方法,合成为最终的程式码建议结果,下图这个建议结果简化了各个方法的具体细节,但是依照结果可以知道,这五个参考的程式码方法,开发者们在解码位图的时候,都设置了额外的Options,并且设定了SampleSize以减少解码大型位图时的内存使用。
与其他搜寻解决方案不同的是,Aroma并非以字串或是Token进行匹配,而是找出能类似查询程式码的例子,并且修剪不相关的程式码,以突显需要强调的部分。而且Aroma所产生的程式码建议,是汇总相似程式码的结果,这些推荐结果代表着惯用写法,因此比起单一搜寻结果,更具代表性也更容易使用。
脸书也强调,Aroma的执行速度非常快,可以即时的提供结果,即便在非常庞大的程式码储存库,也只要几秒钟的时间创建建议,不需要进行预先的模式探勘,而且Aroma的核心算法与语言无关,脸书在内部的Hack、JavaScript、Python和Java程式码裤都部署了Aroma。
