Copilot !智能代码尝鲜推荐!

Copilot !智能代码尝鲜推荐!
阿里巴巴 前端委员会智能化小组 @ 阿里巴巴

文/ 阿里云 - 秦奇

GitHub Copilot 自问世以来就饱受关注,其堪称惊艳的代码推荐能力自不可说,带来的一些其他问题也让大家议论纷纷,比如 程序员自此是不是就失业了? 以及其推荐的代码的“版权”问题。不过本文并不打算对以上的问题进行探讨, 仅仅是我试用申请通过之后,对于Copilot的代码推荐能力的一些实践,希望对大家能有所帮助。 ​

能力汇总

这里我将GitHub Copilot的能力大致分为三种:辅助编程 、文本转代码 以及 经验推断。 ​

辅助编程

顾名思义,辅助编程就是在编程过程中基于用户输入的上下文,对可能的代码进行预测和推荐,从而使编程效率更高。看几个例子: 首先是最常见的React组件的编写和对比:

  • 基本在没有任何上下文时,可以推荐出可用的React组件代码。


  • 在先声明了IProps的情况下,推荐出的则是包含接口定义的组件代码


  • 引入DialogTable组件的代码推荐


总结一下:在没有上下文时,也可以推荐出可用的代码,虽然这个代码大概率不是我们想要的;在具备上下文时,根据上下文语境推荐出的代码则更加准确,并且上下文越丰富,推荐越准确。

文本转代码

文本转代码 是指根据一段描述自动生成目标代码。可以看几个例子:

  • 字符串反转


  • 来个难一点的,浏览器检测


    可以看到,虽然耗时有点久,但也推荐了代码,并且代码看起来还挺像那么回事,至于真的是不是可用,还有待验证。(PS. /*@cc_on!@*/还真是ie11以下独有的代码,可以参考这里

  • 再来一个常见的面试题:快速排序


总结:常用的一些功能、算法确实是可以根据描述来生成代码的,不过生成代码的准确性就无法保证了,这些代码大概率也是来自实际的代码片段,正确与否就需要开发者自己去判断了。个人建议,生成的代码仅供参考,最好不要直接用于生产当中。 ​

经验推断

Copilot 可以自动找出代码中隐含的一些规律。另外,用的多了之后,它可以学习个人编码的习惯,从而推荐出个性化的代码出来。来看个例子:


再来一个复杂一点的,


这个能力还是蛮惊艳的,我猜背后的逻辑类似于code2vec,根据文本语义的相似性推荐来的。

个人建议

Copilot 作为一个代码辅助工具确实好用,但是也需要注意一些事情:

  • ⚠️ 不要过分依赖生成的代码,因为准确性无法保证。

  • ⚠️ 目前还没有本地版的Copilot,使用需要联网,注意代码安全问题。

  • ⚠️ 把它当做一个开发辅助工具(代码补全、代码搜索),而不是当成用来吃饭的家伙。



    淘系前端-F-x-Team 开通微博 啦!(微博登录后可见)
    除文章外还有更多的团队内容等你解锁🔓

分类:
阅读