这是本节的多页打印视图。 点击此处打印.

返回本页常规视图.

SmartCode AI编码助手

SmartCode AI编码助手是一款基于人工智能的编码助手,能够帮助开发者提高编码效率,减少重复劳动,提升代码质量。

1 - JetBrains插件

SmartCode 为使用 JetBrains 全系列IDE的开发者提供的简单易用的AI编程助手插件,支持IntelliJ IDEA, PyCharm, GoLand, Rider, PhpStorm, WebStorm和Andriod Studio全系列JetBrains IDE。提供多种开发语言,Java、Kotlin、Python、Go、C#等的支持。提供智能代码补全、智能代码生成、智能代码重构、智能代码导航、智能代码分析等功能,帮助开发者提升编码效率,降低编码成本,提高代码质量。

1.1 - 代码补全

SmartCode AI编码助手是一款基于人工智能的编码助手,能够帮助开发者提高编码效率,减少重复劳动,提升代码质量。

单行补全

单行补全模式 可用于属性生成、参数补全、变量赋值 等场景。 单行补全 单行补全

多行补全

在实际开发场景中,特别是在写一个新的方法/函数时,每个开发人员的诉求往往是不同的。

  • 某些场景下开发人员希望给一个方法名字,或者一个简单的注释补全工具就可以给我们自动生成整个方法的业务逻辑。
  • 某些场景下我们希望给一个方法名字,然后补全工具在方法里能够逐行的给予补全,这样开发人员可以进行快速的修正,然后补全插件根据修正后的内容,继续给予补全建议。那么这种场景下就需要具备单行/多行补全的切换能力。 通过单行/多行补全开发人员可以根据自己的场景快速的切换补全模式。实现高效开发。
点击右下角的 补全模式

补全模式

点击后,S(Single Line)会切换为M(MultiLine),如下图所示:

多行补全

按tab键接受代码,继续回车,如下图所示:

多行补全

方法级代码补全
  • 输入注释

方法级补全 方法级补全

手工触发

插件默认是自动触发补全,有时候开发人员在进行代码编写时,不管是开发人员在打字时、空格时、回车时默认都会触发代码自动补全。这样很大程度上会干扰开发人员的正常开发,所以很多开发人员希望关闭自动补全,而是通过手工快捷键触发的方式来进行补全,这样开发人员可以真正做到随叫随到的补全效果。

设置手工触发补全
  • 点击修改设置,如下图所示: 补全模式

  • 自动补全 | 改为 “关闭”: 补全模式

  • 设置代码补全触发快捷键:Keymap | Trigger inline Completion 补全模式

  • 点击 Add keyboard Shortcut 补全模式

  • 设置完成后,我们测试是否可以收工触发代码补全。回到PhotoController.java文件,并输入注释以及部分代码。点击回车,并按你设置的代码补全触发快捷键【Control+Comand+T】,查看代码补全效果。 补全模式

1.2 - 代码对话

自动识别用户IDE环境中的代码上下文,结合AISE后台提供的RAG能力,提供实时代码建议。

按 Tab 或单击“接受”以应用代码建议。 代码建议

SmartCode支持3种代码片段选择方式,如 代码解释 中所示,分为以下入口:

  1. 右键快捷菜单
  2. CodeLens
  3. #selection 变量

代码解释

代码解释能力允许开发人员选择代码片段,通过大模型对代码进行自然语言解释。 下图:使用右键快捷菜单调用 代码解释 特性 代码解释

下图:使用codelens(方法体悬浮菜单)方式调用 代码解释 特性 codelens codelens

下图:使用 #selection 变量自定义 代码解释 提示词 election 变量

代码评审

使用右键快捷菜单调用 代码评审 特性 代码评审

生成测试

根据用户选择代码自动生成单元测试用例,并提供较为丰富的测试覆盖能力。 生成测试

生成注释

为方法体提供顶部注释生成能力 生成注释

代码检查

允许用户提供自定义代码检查规则,通过快捷方式触发。 代码检查

多轮对话

支持用户与AI进行连续、多轮的技术对话交流,对话时保持上下文连贯性。 下图展示了多轮对话能力,用户在完成前一轮对话后,可以通过文字语意,比如:这段/以上/前面的,这样的说法提示SmartCode关注前文内容,保持对话的连贯性。 代码检查

2 - 支持使用#变量

对话变量用于在对话时引用IDE中的代码内容,为用户提供更加灵活的提示词组织方式。本次提供3个对话变量:

  • #selection: 用于引用当前激活的编辑器中已经选中的代码
  • #editor:用于引用当前激活编辑器中的任何代码块
  • #file:用于选择文件

通过使用 对话变量 开发者可以实现一些之前不容易实现的提示词,比如:开发者可以通过以下提示词引用某个文件内容,并要求AI将所引用的代码作为参考进行生成,示例如下:

  • 请根据这个文件中的内容 #file:BankTransactionController.java 生成API文档,并使用标准的markdown格式输出。
  • 请参考 #file:Dockerfile 编写一个 docker-compose.yaml 并将对外端口设置为8090,并将日志映射到本地路径中
  • 请对 #selection 进行分析,重点关注其中可能存在的代码安全问题,并提供解决方案和示例代码 用户也可以组合以上变量,构建出更加复杂的提示词,比如:
  • 请参考 #file:api_reference.yaml,修正以下代码中的接口调用逻辑 #selection
  • 请参考 #editor:model.py77-89,生成10个单元测试,尽量覆盖各种场景

各类变量的具体调用方式

  1. 打开SmartCode,在对话输入框点击“#”或者输入“#”,调起#变量

    调起#变量

  2. #selection变量用于在提示词中引入当前活动编辑器中被选中的代码内容

    • 选择#selection变量,选择代码,回车,对已选代码进行回复

      调起#selection变量 调起#selection变量

    • 选择#selection变量,未选择代码,回车会提示:没有选择代码

      调起#selection变量

  3. 使用#editor变量,用于在当前编辑中选择不同的代码库,系统会提示选择类、方法等不同的代码块

    • 选择#editor变量,弹窗显示提取出的代码块

      调起#editor变量 调起#editor变量

    • 选择#selection变量,未选择代码,回车会提示:没有选择代码 调起#selection变量 调起#selection变量

  4. 使用#file变量可以引入当前项目中的任意文件,包括已经开启和未开启的。

    调起#file变量 调起#file变量