codecamp

如何使用通义灵码辅助开发鸿蒙OS - AI编程助手提升效率

一、引言

鸿蒙 OS 是华为推出的一款面向全场景的分布式操作系统,其开发应用主要使用华为基于 IntelliJ IDEA 定制的 DevEco Studio。然而,DevEco Studio 的插件生态相对有限,为了提升开发效率和代码质量,我们可以借助通义灵码这一智能编码助手来辅助开发。

二、通义灵码简介

通义灵码是由阿里云技术团队打造的智能编码助手。它基于通义大模型,能够提供以下功能:

  • 代码续写和优化:根据现有代码上下文,智能生成行级或函数级的代码建议,帮助开发者快速完成代码编写,并对代码进行优化,提高代码质量和执行效率。
  • 自然语言描述生成代码:开发者可以通过自然语言描述需求,通义灵码能够将其转化为相应的代码,大大简化了代码编写过程,尤其适用于复杂功能的实现。
  • 注释生成和代码解释:自动为代码添加详细注释,方便开发者及团队成员更好地理解代码逻辑和功能;同时,能够对代码进行详细解释,包括数据库表结构分析、SQL查询过程解析等,有助于代码的维护和优化。
  • 单元测试生成:根据代码自动生成单元测试用例,确保代码的可靠性和稳定性,提高测试效率。
  • 研发智能问答:作为基础和核心功能,开发者可以通过与通义灵码的问答对话,获取所需的技术支持和解决方案,就像拥有一位智能的编程助手。
  • 代码问题修复:能够识别代码中的潜在问题,并提供修复建议,帮助开发者及时解决代码错误和漏洞。

通义灵码官网:tongyi.aliyun.com/lingma/

通义灵码支持:JetBrains IDEs、Visual Studio Code、Visual Studio,及远程开发场景(Remote SSH、Docker、WSL、Web IDE),安装后登录账号即可开始使用。

三、环境配置

(一)安装通义灵码插件

DevEco Studio 的通义灵码安装方法很简单,它是基于 IntelliJ IDEA 进行二次开发的 IDE,安装步骤和IDEA很类似,可以参考IntelliJ IDEA 中安装和使用通义灵码 AI 编程助手教程

  1. 点击顶部菜单栏的 File -> Settings
    img
  2. 在设置窗口的左侧菜单中选择 Plugins,然后点击 Marketplace
  3. 在搜索框中输入 “通义灵码”,找到插件后点击 Install 按钮进行安装。
    img
  4. 安装完成后,重启DevEco Studio以完成插件的加载。

(二)登录通义灵码

重启 DevEco Studio 后,在右侧工具栏会看到 通义灵码 的图标。点击图标进入插件界面。首次使用时,需要点击登录按钮,浏览器会自动打开阿里云登录页面,完成登录后即可返回 DevEco Studio 使用通义灵码。

img

四、功能演示

(一)代码续写

通义灵码提供行级和函数级的代码补全功能。在IDE编辑器中编写代码时,开启自动云端生成模式,它会根据当前代码文件及相关文件的上下文,自动生成代码建议。

img

同时,当你在编码的过程中,也可以通过快捷键 alt+P 手动触发生成代码建议。

开发小提示:为了让代码补全功能更贴近我们想要的结果,我们可以先写代码注释描述其功能。例如上图所示

通义灵码提供了一组快捷键使用方式,可以更好的进行代码续写的控制:

操作 macOS Windows
接受行间代码建议 Tab Tab
废弃行间代码建议 esc esc
查看上一个行间推荐结果 ⌥(option) + [ Alt+[
查看下一个行间推荐结果 ⌥(option)+] Alt+]
手动触发行间代码建议 ⌥(option)+P Alt+P

你可以使用快捷键快速接受、废弃或切换代码建议。

(二)智能问答

通义灵码的智能问答功能强大,不仅可以回答你的技术问题,还能进行代码创作。你可以向它咨询鸿蒙OS开发中某个功能的用法,或者请求它生成一个特定功能的代码片段。

img

基于智能问答,还能实现很多有用的功能,比如后续的代码注释,代码解释,单元测试生成和代码优化,都是基于基于智能问答实现的。

(三)会话创建和清理

智能问答是一个持续对话的过程,为了提高AI生成答案的质量,应该适时清理会话。你可以通过创建一个新会话或者清理来实现。

  • 清理会话:在对话框中输入/clearContext,然后点击确定即可。
  • 创建新会话:在智能问答的右上角有一个圆形 + 号按钮,点击即可创建新对话。

img

代码小技巧

通义灵码生成的代码一般都会在右上角有这四个小按钮,分别对应着插入、复制、新建和合并的功能,后续的功能会用到这些小技巧。

IMG_256

  • 插入 :会把 AI 生成的代码替换到我们选中的代码位置,一般在代码注释和代码优化中应用。
  • 复制 :则是复制 AI 生成的代码,我们可以自己选择插入的位置。
  • 新建 :则是新建一个文件,把 AI 生成的代码放进去,一般而言生成测试代码会选择新建一个文件夹存放。
  • 合并 :则是把代码黏贴到文件中,比如黏贴到选中的代码后,一般我们在智能问答中得到我们需要的代码可以用合并。

(四)代码注释

通义灵码能够根据代码生成对应的注释,方便代码阅读和维护。使用时,先选中需要注释的代码,在右键菜单中找到通义灵码的代码注释选项,点击后右侧对话栏会生成带注释的代码,可直接合并到原文件或复制后自行操作。

img

也可以用快捷键shift+alt+V,或者右键菜单中也有代码注释功能。

会在左侧显示代码注释结果

(五)代码解释

通义灵码提供了代码解释功能,该功能可用于分析数据库的表结构,也可以用来分析SQL查询的过程,帮助程序员深入理解数据库操作和优化查询性能。

img

(六)单元测试生成

通义灵码能够根据代码设计对应的测试用例,并生成测试代码。

img

通义灵码甚至还能贴心地生成对应的测试代码:

img

测试用例代码一般是复制后到一个专门的测试用例文件中,方便后续测试。

(七)代码优化

通义灵码能够识别选中代码可能存在的问题,并进行优化。

img

它会根据代码的逻辑结构、性能瓶颈等方面提出优化建议,如改进算法、调整SQL语句结构、增加索引等,从而提高代码的执行效率和质量。

(八)AI程序员

通义灵码的AI程序员功能使AI能够像专业程序员一样协助进行代码的修改。在项目开发中,若需修改多个代码文件,AI程序员能轻松胜任,帮助进行代码检查、优化和修改。

img

IMG_267

可以看见ai帮你生成了一些代码,但最后你还得自行选择是否接受他生成的代码,最终决定权还在你自己。

五、总结与展望

通义灵码作为一款智能编码助手,为鸿蒙OS开发提供了全方位的辅助功能。从代码编写、注释、优化到智能问答,它都能有效提高开发效率和代码质量。随着 AI 技术的不断发展,通义灵码将在未来的鸿蒙OS开发中发挥更加重要的作用。

鸿蒙OS 配置文件示例
鸿蒙OS 资源文件分类
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

鸿蒙OS 开发

鸿蒙OS 术语

鸿蒙OS Java API参考

鸿蒙OS ohos.aafwk.ability

鸿蒙OS ohos.aafwk.abilityjet.activedata

鸿蒙OS ohos.aafwk.content

鸿蒙OS java.lang

鸿蒙OS java.Util

鸿蒙OS java.Util class

鸿蒙OS ohos.data.dataability

鸿蒙OS ohos.data.dataability class

鸿蒙OS ohos.agp.components

鸿蒙OS ohos.agp.components interface

鸿蒙OS ohos.agp.components class

鸿蒙OS ohos.global.configuration

鸿蒙OS java.io

鸿蒙OS ohos.data.resultset

鸿蒙OS ohos.data.resultset interface

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }