有奖捉虫:行业应用 & 管理与支持文档专题 HOT
支持绝大部分主流开发语言的补全,其中包含:c、cpp、css、go、html、java、javascript、kotlin、typescript、react、python、sql、markdown 等。只需要使用编辑器打开代码文件,编辑代码文件时候,AI 代码助手会在合适时机和位置自动触发智能代码补全提示,如下图所示(本文档以 IDEA 示例):
?
?
?
回车也会触发新段落的补全:
?
?
?

如何禁用和启用补全功能

单击状态栏的插件小图标,可以启用或者禁用插件代码补全功能,如下图所示:
?
?
?

代码补全触发时机

我们一直在优化代码补全的触发时机,直觉上可能会认为插件在每次输入的时候自动触发补全。其实不是,插件会根据光标所在位置合理选择合适的位置进行代码补全,例如插件当光标位置在代码行尾附近位置,或者换行的时候才会触发代码补全。
行尾右小括号前面位置触发补全:
?
?
?
行尾右大括号前面位置触发补全:
?
?
?
代码行尾位置触发补全:
?
?
?
代码换行位置触发补全:
?
?
?

代码补全内容的粒度

实际使用过程中,插件补全内容的粒度在不同的代码位置是不一样的。实验发现,并不是补全的内容越多越好(可能补全的越多,错得越多,而且速度也会变慢,补全内容的长度与补全所需要的时间成正比),在不同代码位置,补全的内容的多少(粒度)是不一样的。例如在一个空的代码块中,插件则按代码块粒度进行补全;在非空代码块中,大部分情况按单行粒度进行补全;在类定义块中,或者顶级块中,就算块内不为空,也按代码块粒度进行补全。
光标在方法或者函数体内,且体内为空,按块补全:
?
?
?
光标在 try 语句内,且体内为空,按块补全:
?
?
?
光标在方法或者函数体内,且体内不为空,按单行补全:
?
?
?
光标在类定义体内,按块补全:
?
?
?
光标在一行代码尾部范围,则按单行补全:
?
?
?

如何提升代码补全结果的正确性

代码补全结果的正确性是相对当前开发者来说的,对插件来说可能是正确合理的,但是对当前开发者来说可能不正确、不合理。当遇到不合预期的补全结果的时候,建议给我们反馈问题,让我们可以针对这些案例进一步优化。
除此之外,这里也有一些最佳实践,可以帮助开发者提升代码补全结果的正确性。为了方便您举一反三,可以把代码补全功能,想象成一个隐藏在背后的程序员:
他的眼睛几乎只能看到当前光标之前的代码(代码行数和字符数也是有一定限制的)。
具有较强的逻辑推理和模仿能力。
他只能接着当前光标位置继续完成后续的代码。
所以,从上面三个特性就能很容易推出可以通过使用光标之前的代码“引导”他帮忙我们写出更为正确的后续代码。引导的方式有很多种,如下所示:
通过代码注释直接告诉他,我想要做什么,例如实现一个冒泡排序。
通过已有平级同类型代码,引导出可能的补全内容,例如用户模块的 CRUD 功能实现,通过实现 CRU,引导他模仿 CRU 的实现方式,实现 D 功能。
让自己的代码有迹可循,例如代码风格统一、变量和方法等命名具体且有规律、代码结构具有规律。他很擅长挖掘已有代码潜在的规律,然后去模仿推导。

通过代码注释引导补全

?
?
?

通过已有平级同类型代码引导补全

?
?
?


http://www.vxiaotou.com