作为开发者,找教程、查文档、搜开源可是必备技能,世界那么大,说不定我们现在做的事别人已经有了一套完整的解决办法。
与此同时,信息化时代也是开发者们用一行行代码、一句句命令搭建起来的,但是在代码的世界中,信息的获取并不是特别高效,开发者只能凭借各自的经验与技巧来提升效率。但现在,开发者有了新的智能代码搜索引擎。
aiXcoder 代码搜索:codesearch.aiXcoder.com
我们知道,开源代码库可以通过关键字在 GitHub 中查找;教程博客可以在 Medium 这样的平台上搜索;API 则可在官方文档翻阅。
然而问题在于,它们的粒度都太大:一个开源项目,开发者很可能只需要一个函数或一段代码;一篇博客,可能真正有用的也就几句话或者几段代码。如果能深入代码层级获取信息,那么效果肯定是更好的,只不过它们更难实现一些。
深入代码层面,一个简洁好用的搜索系统能直接给出我们想要的代码块,相比一般搜索工具给出的自然语言,这些机器语言会更直接地告诉我们 API 怎么用、函数怎么写、Bug 出在了哪等等。
aiXcoder 近日就推出了这样的一套工具,通过搜索 API 使用案例、精准查找开源或私有代码块,能提升开发者的编码效率。
「智能代码搜索引擎」代码搜索可以分为以下 6 部分:
- API使用案例搜索:搜索使用此API的代码块;
- Github代码搜索:根据关键字搜索Github上的代码块;
- 自然语言搜代码:支持中英文搜索,通过自然语言搜索对应功能的代码块;
- 相似代码搜索:根据代码片段搜索Github上的相似代码块;
- StackOverflow问答搜索:支持中英文搜索,通过自然语言搜索StackOverflow上的对应问题;
- 企业内部代码搜索:定制搜索引擎,对企业内部代码进行搜索;
智能代码搜索,语言与代码的交融
对于开发者,概括来看,代码搜索能分为以代码搜代码和以文字搜代码,这两部分应该是相辅相成的。aiXcoder 就囊括了这两部分,我们下面以 Java 为例,展示这两类代码搜索都是什么样的,它们的效果又怎么样。
以代码搜代码
调包调参已经是开发中的一种常态,除去熟悉的那一些API,其它很多都需要仔细查阅 API 文档,或者看看其它开发者都是怎么用的。一般参数之类的信息 IDE 都会简要介绍,但重要的是需要弄懂 API 的使用环境、上下文代码都是什么样的。
比如说我们要搜索一个 API,那么首先需要确定完整的调用路径,这样才能定位到真正想要的代码块,下图就完成了定位:
选择需要的 API 后,aixcoder 就能自动给出使用案例了,每一次 API 搜索都会给出多条案例,同时还会给出相关的 API。开发者很可能会感觉到,如下直接看使用案例要比读文档要简单得多,可以快速把使用逻辑迁移到自己的代码。
除了上面这种标准API 的搜索,很多时候我们希望通过某些关键词来搜索代码片段。可能你会说 GitHub 自己就有搜索功能,然而它搜索的结果更多是项目名称或者项目描述,它并不会深入代码。aiXcoder 中的 Github 代码搜索会尝试根据关键词检索对应的代码片段,相比原有的搜索模块会更加精准。
如下在相似代码中粘贴一部分代码,aiXcoder就能帮你找到 GitHub 中其它开发者的实现,开发者从而能仔细思考优化方向。
以文字搜代码
用自然语言直接检索代码是非常吸引人的一项 NLP 任务,它展现了自然语言与机器语言之间的对应关系,该任务也是非常前沿的一个研究领域。aiXcoder也能做到以自然语言搜索对应的代码,在搜索框中描述你想要完成的功能,说不定就能找到完整代码。
目前我们可以用中文,也可以用英文直接搜索,例如我们想将输入流转化为字符串或者将字符串写入文件,那么直接描述就好了。
例如键入「如何计算编辑距离」,开发者能得到一系列开源实现,基本上经过简单的修改就能嵌入到自己的代码逻辑中。
搜索出来的结果一般是单个函数或方法,它们基本上都实现了我们描述的功能,后续只需要简单修改一下,就能直接嵌入到我们自己的代码中。
另一种自然语言搜索是检索 StackOverflow 中的问题与解决方案,因为问答通常都是带有代码的,这些代码说不定就是我们遇到的问题。这种搜索方式也同时支持中文与英文,引擎会根据我们的意图自动找到对应的问答。
在灿烂的信息化时代,开发者专用的搜索也需要深入到代码层面,并给出函数、方法等更具体而「形象」的推荐,这种层面的搜索工具,才能显著提升开发的效率。
而 aiXcoder 就是为开发者而生,我们会不断努力把先进的AI技术应用于软件开发,为更多的开发者服务。