皇上,还记得我吗?我就是1999年那个Linux伊甸园啊-----24小时滚动更新开源资讯,全年无休!

代码推荐哪家强?Facebook 机器学习技术有话讲

自动补全功能相信大家在写代码时用得不少,这是一个十分方便的功能,但也十分基础,它只是免去了我们输入冗长单词的操作。但如果我告诉你,有一个工具能直接给你推荐代码 —— 可以直接用的代码,你会考虑使用吗?

日前,Facebook 宣布了一个名为 Aroma 的工具,通过 Aroma,开发者可以轻松找到常见的编码模式,而无需手动浏览数十个代码片段,从而节省了日常开发工作流程的时间和精力。

Aroma 基于代码和代码之间进行搜索和推荐,辅以机器学习的加持,即便是在大型代码仓库中也有可观的效率。

说了这么多,下面就来看看 Aroma 是如何进行代码推荐的。

假如一位开发者编写了如下的代码,但同时想了解其他人是如何解码手机 bitmap 的,他就可以使用下面的代码直接进行搜索:

Bitmap bitmap = BitmapFactory.decodeStream(input);

Aroma 会返回一些推荐:

final BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = 2;
// ...
Bitmap bmp = BitmapFactory.decodeStream(is, null, options);

这段代码来自于五个实现类似功能的代码,但是去除了相关细节,以便开发者更好地参考。

此外,我们也可以把 Aroma 集成到开发环境中。

代码推荐哪家强?Facebook 机器学习技术有话讲

Facebook 表示除了将 Aroma 部署到自己的内部代码仓库之外,还为其它的开源项目创建了 Aroma 版本。上面的示例就是来自 GitHub 上 5000 多个开源 Android 项目的集合。

代码推荐哪家强?Facebook 机器学习技术有话讲
△ Aroma 工作原理

虽然这个工具提升了开发者的效率,但也引起了一些争议。有开发者认为,Aroma 似乎是强行使用机器学习解决实际上没有人有问题的例子。他认为很多人搜索习惯用法的主要用例,是希望了解如何进行高级别的重构,而不仅仅是为了获得相似的代码。

对此,你有怎样的看法?欢迎留言交流。

转自 https://www.oschina.net/news/105885/aroma-ml-for-code-recommendation