代码指南针是诺基亚贝尔实验室开发的软件包的上下文搜索引擎。它通过为您的特定软件项目推荐最佳可能的软件库来增强代码的重复使用。为自己看:

代码指南针可作为网站,REST API以及VSCODE的IDE插件提供。
我们在NPM上为JavaScript,Python的Python和Java Maven Central索引索引软件包。
如果您正在寻找来自爱立信的类似命名的代码理解工具来探索大型代码库,请在此处查看。除名称外,该项目与该项目之间没有关系(正式或非正式)。
现代软件开发基于通过开源库和框架重复使用代码。这些图书馆发表在软件包存储库中,这些存储库以指数率增长。通过构建更好的软件包搜索工具,我们旨在刺激更多的代码重复使用,并在“长尾巴”中更可发现软件包。
在这篇介绍性的博客文章中可以找到有关为什么,什么,什么以及如何找到代码指南针的介绍。
代码指南针是软件包的上下文搜索引擎。
代码指南针与其他软件包搜索引擎不同,您可以将搜索“播种”使用您已经知道或使用的库的名称。我们称这些“上下文库”。然后,代码指南针使用这些上下文库来“锚定”与代码最相关的技术堆栈中的搜索。
当使用Visual Studio Code IDE扩展程序时,无需手动输入上下文库:代码指南针将自动提取活动源文件的导入依赖项以锚定其搜索。
请注意,代码指南针永远不会将您的代码发送到服务器。仅发送代码中导入的第三方模块的名称。
Code Compass使用无监督的机器学习来学习如何通过使用的上下文来群集相似的软件包,这是由图书馆如何与大型开源代码库中的其他库一起导入的。
软件包表示为向量,我们通过与单词矢量类比称为“库矢量”。就像Word2Vec通过分析大型文本语料库中的单词如何共同发生的方式将单词转化为向量一样,我们的“ import2vec”通过分析导入语句在大型代码库中如何共同发生,将库转化为向量。
您可以在我们的2019年MSR论文中阅读详细信息。 Zenodo上有辅助材料,包括Java,JavaScript和Python的训练有素的图书馆嵌入。
例如,对于Java,我们查看了Github上的许多开源项目和Maven Central上的图书馆,并研究了如何在这些项目中进口图书馆。我们确定了与Web框架,云计算,网络服务和大数据分析有关的大量项目集群。众所周知的项目,例如Apache Hadoop,Spark和Kafka都聚集在同一地区,因为它们通常一起用于支持大数据分析。
以下是Java学习向量空间的3D可视化(T-SNE图)。每个点代表一个Java库,各种彩色簇对应于数据中发现的不同细分区域。我们强调了Apache Projects的名称。

docs/ :代码指南针搜索服务的REST API文档plugins/vscode/ :Visual Studio代码扩展程序以将代码指南针集成到IDEscripts/ :数据提取脚本以生成库从源代码导入共发生的库nbs/ :带有张量的jupyter笔记本电脑,可从进口共发生数据训练库嵌入库代码指南针是由诺基亚贝尔实验室的应用平台和软件系统实验室中的研究团队开发的。
有关代码指南针贡献者的字母列表,请参见贡献者。
如果您想训练其他语言的嵌入,请查看import2vec下的脚本,以了解需要哪些数据。
如果您有改进,用户反馈或想报告错误的建议,请在此存储库中打开问题。
BSD3