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