草庐IT

阿里云智能编码插件,更Cosy的开发体验

云效DevOps平台 2023-12-15 原文

我们是谁

我们来自阿里云云效代码团队,为了寻找更舒服的开(更)发(早)体(下)验(班),为Java程序员打造出 阿里云智能编码插件,aka Alibaba Cloud AI Coding Assistant(小名 Cosy)


(目前已经上架 IntelliJ IDEA 插件市场 ⬆️ )

Cosy集合了代码补全和代码搜索两大开发辅助功能,不仅能通过深度学习模型和程序分析技术,精准智能地帮助我们减少 击剑🤺 击键次数,还能基于海量代码片段和社区问答数据,让我们可以哪里不会搜哪里,沉浸在IDE内快乐开发。

今天带大家感受致力于打造沉浸式开发体验的代码示例搜索功能~

更舒服的开发姿势

大家想象中开发者的工作状态应该是码字如飞形如流水一气呵成,但实际却往往是左手百度谷歌,右手Stack Overflow,在IDE和浏览器间来回横跳(🤪。坦白说,我们之前也是这样~

我们开发过程中经常写着写着就会用到一些并不是那么熟悉的接口,或者是要实现一些不那么常用的功能,很难徒手全文默写一步到位,每天对着浏览器的时间比IDE窗口还要久。仔细想想这个过程效率还挺低的,不仅不同的参考信息要用不同的方式搜索不同的网站,还要筛选掉大量无效低质的信息,一不小心浏览器窗口就层层叠叠Tab列表就密密麻麻了。

为了让这个过程更简单更酷炫,我们除了代码智能补全,也在Cosy中精心打造了代码示例搜索功能,让我们和“在IDE和浏览器之间反复横跳”的日子说拜拜 👋

1、多API精准搜索:这个接口怎么用来着

名字听起来很酷炫,实际上就是:我明确记得我要用的方法是什么,但是不记得具体的使用方式,比如入参出参、异常处理等。

这个时候我们就可以直接把光标落在我们要查看参考示例的类或方法上,即可通过快捷键一键呼出海量参考示例片段(还支持快捷键触发和鼠标右键菜单栏选择哦)。

👆 比如,我正在行云流水地快乐编码,突然想从本地读取配置文件,只记得可以用FileInputStream 但忘了上下流处理的具体写法,我可以先打出 FileInputStream 然后直接一个快捷键,一秒弹出大量使用到FileInputStream的开源优质示例,我就可以直接对照着完成剩下的代码逻辑啦。

除此以外,API精准搜索还支持多API同时使用的场景。比如我不仅需要使用FileInputStream还需要同时用到BufferedReader的参考片段,我可以将BufferedReader加入到我的搜索条件,查看更为确切的搜索结果。

2、自然语言搜索:这个功能怎么实现来着?

第二种姿势是自然语言搜索,我们在明确知道我们要做什么,但不知道要如何实现时,我们可以通过描述我们的意图进行搜索。

👆 在我们描述过程中,Cosy也会自动联想我们的查询语句。

除了GitHub开源代码片段以外,我们还收录了海量优质的StackOverflow社区问答数据。通过代码片段语义分析和上下文描述,我们支持对代码片段的自然语言描述性搜索。

3、组合技:小孩子才做选择,我全都要!

最后一种场景是我们的组合技。当我们明确我们要做的事情,比如说我们想要读取Excel,但是我们还想用第三方组件库EasyExcel实现这件事情,那你我们可以将EasyExcel这个精准API搜索条件到功能描述的后面,像下面这个样子:

更友好的中文支持


或许你会问:可是中文才是我的本命,英文描述不清楚我的问题该怎么办?

不 用 担 心 !

我们贴心地对自然语言搜索进行了更好的本土化支持~ 不但可以补全联想中文搜索语句,还能使用中文搜索中英文代码片段~

再也不用在海量信息中苦苦筛选,IDE内快速验证可用,哪里不会查哪里,老板再也不用担心我的进度( *`ω´)

下期预告

我们不忘初心,为了寻找最舒服的开发体验(最早下班!)在捣鼓出来代码示例片段搜索功能之后,我们进一步想做社区问答和社区文档搜索。

想象一下,我本地调试堆栈异常了,直接框选错误提示,一键搜索相关解决讨论,直接在IDE内解决问题!

是不是很酷炫,是不是很想用 ~

🤫 这个月0.9.8-beta版本即将上线新功能,各位Java开发同学们,我们不见不散!

关于我们

了解更多关于云效DevOps最新动态,可微信搜索并关注【云效】公众号;

福利:公众号后台回复【指南】,可获得《阿里巴巴DevOps实践指南》&《10倍研发效能提升案例集》;

看完觉得对您有所帮助别忘记点赞、收藏和关注呦;

有关阿里云智能编码插件,更Cosy的开发体验的更多相关文章

  1. ruby - 什么是填充的 Base64 编码字符串以及如何在 ruby​​ 中生成它们? - 2

    我正在使用的第三方API的文档状态:"[O]urAPIonlyacceptspaddedBase64encodedstrings."什么是“填充的Base64编码字符串”以及如何在Ruby中生成它们。下面的代码是我第一次尝试创建转换为Base64的JSON格式数据。xa=Base64.encode64(a.to_json) 最佳答案 他们说的padding其实就是Base64本身的一部分。它是末尾的“=”和“==”。Base64将3个字节的数据包编码为4个编码字符。所以如果你的输入数据有长度n和n%3=1=>"=="末尾用于填充n%

  2. ruby - 用逗号、双引号和编码解析 csv - 2

    我正在使用ruby​​1.9解析以下带有MacRoman字符的csv文件#encoding:ISO-8859-1#csv_parse.csvName,main-dialogue"Marceu","Giveittohimóhe,hiswife."我做了以下解析。require'csv'input_string=File.read("../csv_parse.rb").force_encoding("ISO-8859-1").encode("UTF-8")#=>"Name,main-dialogue\r\n\"Marceu\",\"Giveittohim\x97he,hiswife.\"\

  3. ruby - 如何每月在 Heroku 运行一次 Scheduler 插件? - 2

    在选择我想要运行操作的频率时,唯一的选项是“每天”、“每小时”和“每10分钟”。谢谢!我想为我的Rails3.1应用程序运行调度程序。 最佳答案 这不是一个优雅的解决方案,但您可以安排它每天运行,并在实际开始工作之前检查日期是否为当月的第一天。 关于ruby-如何每月在Heroku运行一次Scheduler插件?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/8692687/

  4. ruby-on-rails - 无法使用 Rails 3.2 创建插件? - 2

    我对最新版本的Rails有疑问。我创建了一个新应用程序(railsnewMyProject),但我没有脚本/生成,只有脚本/rails,当我输入ruby./script/railsgeneratepluginmy_plugin"Couldnotfindgeneratorplugin.".你知道如何生成插件模板吗?没有这个命令可以创建插件吗?PS:我正在使用Rails3.2.1和ruby​​1.8.7[universal-darwin11.0] 最佳答案 随着Rails3.2.0的发布,插件生成器已经被移除。查看变更日志here.现在

  5. ruby - 使用 C 扩展开发 ruby​​gem 时,如何使用 Rspec 在本地进行测试? - 2

    我正在编写一个包含C扩展的gem。通常当我写一个gem时,我会遵循TDD的过程,我会写一个失败的规范,然后处理代码直到它通过,等等......在“ext/mygem/mygem.c”中我的C扩展和在gemspec的“扩展”中配置的有效extconf.rb,如何运行我的规范并仍然加载我的C扩展?当我更改C代码时,我需要采取哪些步骤来重新编译代码?这可能是个愚蠢的问题,但是从我的gem的开发源代码树中输入“bundleinstall”不会构建任何native扩展。当我手动运行rubyext/mygem/extconf.rb时,我确实得到了一个Makefile(在整个项目的根目录中),然后当

  6. Ruby Sinatra 配置用于生产和开发 - 2

    我已经在Sinatra上创建了应用程序,它代表了一个简单的API。我想在生产和开发上进行部署。我想在部署时选择,是开发还是生产,一些方法的逻辑应该改变,这取决于部署类型。是否有任何想法,如何完成以及解决此问题的一些示例。例子:我有代码get'/api/test'doreturn"Itisdev"end但是在部署到生产环境之后我想在运行/api/test之后看到ItisPROD如何实现? 最佳答案 根据SinatraDocumentation:EnvironmentscanbesetthroughtheRACK_ENVenvironm

  7. ruby - 是否可以覆盖 gemfile 进行本地开发? - 2

    我们的git存储库中目前有一个Gemfile。但是,有一个gem我只在我的环境中本地使用(我的团队不使用它)。为了使用它,我必须将它添加到我们的Gemfile中,但每次我checkout到我们的master/dev主分支时,由于与跟踪的gemfile冲突,我必须删除它。我想要的是类似Gemfile.local的东西,它将继承从Gemfile导入的gems,但也允许在那里导入新的gems以供使用只有我的机器。此文件将在.gitignore中被忽略。这可能吗? 最佳答案 设置BUNDLE_GEMFILE环境变量:BUNDLE_GEMFI

  8. ruby - 在 Windows 机器上使用 Ruby 进行开发是否会适得其反? - 2

    这似乎非常适得其反,因为太多的gem会在window上破裂。我一直在处理很多mysql和ruby​​-mysqlgem问题(gem本身发生段错误,一个名为UnixSocket的类显然在Windows机器上不能正常工作,等等)。我只是在浪费时间吗?我应该转向不同的脚本语言吗? 最佳答案 我在Windows上使用Ruby的经验很少,但是当我开始使用Ruby时,我是在Windows上,我的总体印象是它不是Windows原生系统。因此,在主要使用Windows多年之后,开始使用Ruby促使我切换回原来的系统Unix,这次是Linux。Rub

  9. ruby-on-rails - 在 Rails 开发环境中为 .ogv 文件设置 Mime 类型 - 2

    我正在玩HTML5视频并且在ERB中有以下片段:mp4视频从在我的开发环境中运行的服务器很好地流式传输到chrome。然而firefox显示带有海报图像的视频播放器,但带有一个大X。问题似乎是mongrel不确定ogv扩展的mime类型,并且只返回text/plain,如curl所示:$curl-Ihttp://0.0.0.0:3000/pr6.ogvHTTP/1.1200OKConnection:closeDate:Mon,19Apr201012:33:50GMTLast-Modified:Sun,18Apr201012:46:07GMTContent-Type:text/plain

  10. C# 到 Ruby sha1 base64 编码 - 2

    我正在尝试在Ruby中复制Convert.ToBase64String()行为。这是我的C#代码:varsha1=newSHA1CryptoServiceProvider();varpasswordBytes=Encoding.UTF8.GetBytes("password");varpasswordHash=sha1.ComputeHash(passwordBytes);returnConvert.ToBase64String(passwordHash);//returns"W6ph5Mm5Pz8GgiULbPgzG37mj9g="当我在Ruby中尝试同样的事情时,我得到了相同sha

随机推荐